- 1. 概要
- 2. 重要なこと
- 3. 引数
1. 概要
ここは、関数の引数だけ・・・。
何故ならば、今(2021年10月13日)、「Laravel」を使っておって、「Laravel」の場合、引数の同じ別の「クラス::メソッド」を使うことになりますのでな。
本ページは、下記のサイトを参考にさせていただきました。
「PHP: setcookie - Manual」
2. 重要なこと
最も重要なのは、参考サイトをそのまま書き写しますが。
setcookie() は、その他のヘッダ情報と共に 送信するクッキーを定義します。 ほかのヘッダ情報と同様に、 クッキーは、スクリプトによる他のあらゆる出力よりも前に 送信される必要があります(これはHTTPプロトコルの制約です)。 や タグはもちろん 空白も含め、あらゆる出力よりも前にこの関数をコールするようにしなければなりません。
なかなか、「PHP」をそのままべたで使用することは、少なくなっているかと思います。
なんらかのテンプレートエンジンなりフレームワークの上で、「PHP」を使用しているということで。
そうなると、そのテンプレートエンジンやフレームワークが、実際のプロトコル上、どういう順番で何を送っているかが不明なわけです。
なので、結局、テンプレートエンジンやフレームワークの仕組みを理解して使うか、わたしが「Laravel」で別のものを使っているように、それらが用意している「Cookie」用の仕組を利用することになります。
3. 引数
これもほぼ、丸写しですな。
setcookie
(
string $name, // Cookie 名
string $value = "", // 値
int $expires = 0, // 有効期限(※1)
string $path = "", // サーバー上での、クッキーを有効としたいパス(※2)
string $domain = "", // クッキーが有効な (サブ) ドメイン(※3)
bool $secure = false, // セキュアな HTTPS 接続の場合にのみ送信
bool $httponly = false // HTTP を通してのみクッキーにアクセス
): bool // 成功時 true 失敗時 false(※4)
※3のドメイン名の指定までは、設定しておくことをお勧めします。
そうでないと、わたしがそうであったように意図していない動きになってしまったりします。
※1 1970年1月1日(コンピュータ紀元)からの経過秒数で指定します。
なので、「time()」にプラスすることの、秒数で指定します。時間、日数まで指定するときはそれなりの掛け算を忘れないように。
※2 パスを指定していないと、クッキーを設定したコンテンツのパス以下でのみ有効になります。通常は、「root」以下に設定したいものであるかと思います。「root」以下に設定する場合は、「'/'」を指定します。
※3 「xxx.yyy.zz.jp」を指定すれば、「xxx.yyy.zz.jp」を含む、「*.xxx.yyy.zz.jp」で有効になります。通常は、ウェブサーバのフルドメインを指定することになるかと思います。
※4 これは、呼び出し自体が、成功したか失敗したかを示すもので、クライアントにそのクッキーが設定されたことを保証するものではありません。当然、クライアント側が「Cookie」を無効にしていれば、この関数が成功に終わっても、クライアント側には設定されません。
|