$_COOKIEとは
$_COOKIEとは、PHP定義済み変数の1つで、クッキー(Cookie)システムによってHTTPクッキーから渡された値の変数であり、連想配列で使用します。
・クッキー(Cookie)とは、ウェブサーバーとウェブブラウザの間で状態を管理する機構、または機構による保存データ自体のこと
・クッキー(Cookie)は、ユーザーとサーバー間の状態を管理する機能を提供する
・クッキー(Cookie) は、固有のユーザを識別できる
cookie と session の違い
・cookieもsessionも情報を保存するために使用される。
・cookieはクライアント側のマシン(主にブラウザ)にのみ保存され、sessionはブラウザだけでなく、サーバーにも情報が保存される。
・保存の期間も異なり、sessionはユーザーがブラウザを閉じるか、サイトを離れると情報が削除されます。
一方cookieには永続クッキーがあり、情報を保持し続けることも可能です。
使い方
クッキーを保存するには、setcookie()関数を使用します。
保存したクッキーを取得するには、setcookie()関数でクッキーの名前を引数に設定し、そのクッキー名を配列のキー値とし取得する。
変数 = $_COKKIE['キー値']
クッキーを削除するには、setcookie()関数の第3引数の有効期限を現在より前(マイナス)に設定する。
setcookie()関数
setcookie()関数とは、名前の通りクッキーに値を登録する。
また、 任意のクッキーをクライアントの Webブラウザに送信します。
setcooki()関数は、第7引数まで設定することができ、返り値は、クッキーの送信に成功した場合には true を、その他の場合は false を返す。
<?php
setcookie(
string $name,
string $valule,
int $expires,
string $path,
string $domain,
bool $secure,
bool $httponly
); bool
1. $name - クッキーの名前
2. $value - クッキーの値
3. $expires - クッキーの有効期限 (Unix タイムスタンプなので Epoch(1970年 1月 1日)からの経過秒数となります。)
4. $path - クッキーを有効とするパス
5. $domain - クッキーを有効とするドメイン
6. $secure - true を指定するとセキュアな通信、HTTPS接続の場合にのみクッキーを送信します。デフォルトはfalse
7. $httponly - true を指定するとHTTPのみがクッキーにアクセスできます。デフォルトはfalse
サンプル
-
setcookie()関数 を定義しクッキーを送信します。送信された内容はクッキーに登録されます。
※setcookie()関数は、あらゆる出力の前に記述しなければならない。ヘッダー(header)情報、<DOCTYPE>タグ、<html>タグ、空白、echo、print などより前。
<?php
$value = "この文字列データがクッキーで送信されます";
// クッキー名は"testCookie1"
setcookie("testCookie1", $value);
// 秒数で指定のため有効期限は1時間
setcookie("testCookie2", $value, time()+60*60);
// 有効期限は30日間で、サーバー上のクッキーの有効パスは"test/php/"、ドメインは"qiita.com"
setcookie("testCookie3", $value, time()+60*60*24*30, "/test/php/", "", false, true);
- 登録したクッキーの内容は、スーパーグローバル変数
$_COOKIEで取得します。連想配列のキー名はクッキー名を使用します。
<?php
$testCookie1 = $_COOKIE["testCookie1"];
$testCookie2 = $_COOKIE["testCookie2"];
$testCookie3 = $_COOKIE["testCookie3"];
echo $testCookie1;
echo $testCookie2;
echo $testCookqiita.comie3;
// 注意: 2回目以降のアクセスで表示される
実行結果
この文字列データがクッキーで送信されます
この文字列データがクッキーで送信されます
この文字列データがクッキーで送信されます
// "testCookie3"は https://qiita./test/php/test.php が有効となるパスとドメインである
- 最後に、クッキーの削除です。有効期限を設定していない場合は、
ブラウザを閉じた時点でクッキーが削除される。
クッキーを削除するには、setcookie()関数の第3引数である有効期限を、現在より過去の日時に設定します。(過去であれば何秒でも何時間でも問題ない)
<?php
setcookie("testCookie1", "", time()-60);
setcookie("testCookie2", "", time()-60);
setcookie("testCookie3", "", time()-60, "/test/php/");
// パス指定してる場合は、指定しないと削除されないので注意
参考
著者: E.R (株式会社ウィズツーワン)