サーチ…


前書き

HTTP Cookieは、ユーザーがブラウズしている間に、Webサイトから送信され、ユーザーのWebブラウザーによってユーザーのコンピューターに保存される小さなデータです。

構文

  • bool setcookie( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool $secure = false [, bool $httponly = false ]]]]]] )

パラメーター

パラメータ詳細
クッキーの名前。これは$_COOKIEスーパーグローバルから値を取得するために使用できるキーです。 唯一の必須パラメータです
Cookieに格納する値。このデータにはブラウザからアクセスできるので、ここでは何も保存しないでください。
失効するクッキーが期限切れになる時期を表すUnixタイムスタンプ。ゼロに設定すると、セッションの終了時にクッキーが期限切れになります。現在のUnixタイムスタンプよりも小さい数値に設定すると、クッキーは直ちに失効します。
パスクッキーの範囲。 /設定すると、クッキーはドメイン全体で利用可能になります。 /some-path/設定すると、そのパスとそのパスの子孫でのみCookieが使用可能になります。デフォルトは、クッキーが設定されているファイルの現在のパスです。
ドメイン Cookieが使用可能なドメインまたはサブドメイン。裸のドメインstackoverflow.com設定すると、そのドメインとすべてのサブドメインでCookieが使用可能になります。サブドメインmeta.stackoverflow.com設定すると、そのサブドメインとすべてのサブサブドメインでのみCookieが使用可能になります。
安全な TRUE設定すると、クッキーは、クライアントとサーバーの間にセキュアなHTTPS接続が存在する場合にのみ設定されます。
httponly CookieをHTTP / Sプロトコルでのみ使用できるようにし、JavaScriptなどのクライアント側のスクリプト言語では使用できないように指定します。 PHP 5.2以降でのみ利用可能です。

備考

setcookie関数を呼び出すだけでは、与えられたデータを$_COOKIEスーパーグローバル配列に入れるだけではないことに注意してsetcookie

たとえば、次のようなことはありません。

setcookie("user", "Tom", time() + 86400, "/");
var_dump(isset($_COOKIE['user'])); // yields false or the previously set value

値はまだありません。次のページが読み込まれるまではありません。関数setcookie次のhttp接続でこのクッキーを設定するようにクライアント(ブラウザ)に指示します 。次に、ヘッダーがブラウザーに送信されると、ヘッダーにはこのCookieヘッダーが含まれます。ブラウザはクッキーがまだ期限切れでないかどうかチェックし、そうでなければhttpリクエストでクッキーをサーバに送信します。これはPHPがそれを受け取り、その内容を$_COOKIE配列に入れます。

Cookieを設定する

クッキーは、 setcookie()関数を使用して設定されます。クッキーはHTTPヘッダーの一部なので、出力をブラウザに送信する前にクッキーを設定する必要があります。

例:

setcookie("user", "Tom", time() + 86400, "/"); // check syntax for function params

説明:

  • 名前がuser Cookieを作成しuser
  • (オプション)クッキーの値はTom
  • (オプション)Cookieの有効期限は1日(86400秒)
  • (オプション)Cookieはウェブサイト全体で利用できます/
  • (オプション)CookieはHTTPS経由でのみ送信されます
  • (オプション)JavaScriptなどのスクリプト言語ではCookieにアクセスできません

スーパーグローバル$_COOKIEに新しいデータがすぐに$_COOKIEないため、作成または変更されたクッキーは後続のリクエスト( pathdomain一致する場合)でのみアクセスできます。

Cookieの取得

クッキー指定user取得と出力

クッキーの値は、グローバル変数$_COOKIEを使用して取得できます。たとえば、 userという名前のCookieがある場合、このように取得できます

echo $_COOKIE['user'];

Cookieの変更

クッキーの値は、クッキーをリセットすることによって変更することができます

setcookie("user", "John", time() + 86400, "/"); // assuming there is a "user" cookie already

クッキーはHTTPヘッダーの一部なので、出力がブラウザに送られる前にsetcookie()呼び出さなければなりません。

クッキーを変更するときは、 setcookie()pathdomainパラメータが既存のクッキーと一致するか、新しいクッキーが代わりに作成されることを確認してください。

クッキーの値部分は、クッキーを送信すると自動的にURLエンコードされ、受信されると自動的にデコードされ、クッキー名と同じ名前で変数に割り当てられます

Cookieが設定されているかどうかの確認

スーパーグローバル$_COOKIE変数にisset()関数を使用して、Cookieが設定されているかどうかを確認します。

例:

// PHP <7.0
if (isset($_COOKIE['user'])) {
    // true, cookie is set
    echo 'User is ' . $_COOKIE['user'];
else {
    // false, cookie is not set
    echo 'User is not logged in';
}

// PHP 7.0+
echo 'User is ' . $_COOKIE['user'] ?? 'User is not logged in'; 

Cookieの削除

クッキーを削除するには、有効期限のタイムスタンプを過去の時刻に設定します。これにより、ブラウザの削除メカニズムが起動されます。

setcookie('user', '', time() - 3600, '/');

クッキーを削除するときは、 setcookie()pathdomainパラメータが、削除しようとしているクッキーと一致するか、すぐに期限切れになる新しいクッキーが作成されることを確認してください。

現在のページが$_COOKIE値を使用する場合は、 $_COOKIE値を設定解除することをお勧めします。

unset($_COOKIE['user']);


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow