PHPでCookieを保存したり、取得、送信する方法です。またCookieを保存できない原因などもご紹介します。
目次
Cookieの保存
Cookieに値を保存するにはsetcookie()
を使います。
setcookie()
の第1引数にクッキー名、第2引数にクッキーに入れたい値を設定します。
1 2 |
// cookie名「pref」に、「tokyo」という値を追加 setcookie('pref', 'tokyo'); |
tokyo
Cookieに有効期限を設定
setcookie()
の第3引数に有効期限を設定することもできます。
第3引数を省略した場合、ブラウザを閉じたらCookieも消滅します。
1 2 |
// 30日間有効のCookieを設定 setcookie('pref','tokyo', 'time()+60*60*24*30'); |
30日間有効のCookieを設定しました。
1つのCookieに複数の値を配列で格納
次に1つのCookieに複数の値を格納してみます。
Cookieを定義しているRFC6265によれば、Cookieの使用は1ドメイン50個までに制限されているため、多量のCookie扱う場合は、配列で複数の値を格納するなど節約する必要があります。
1 2 3 4 |
// 1つのCookieに3つの値を配列で格納 setcookie('pref[1]','tokyo'); setcookie('pref[2]','kanagawa'); setcookie('pref[3]','chiba'); |
以下のように配列形式で格納されました。
Array ( [1] => tokyo [2] => kanagawa [3] => chiba )
setcookie()
には有効期限以外にも様々なオプションを設定できます。
setcookie ( クッキー名, 値, 有効期限, パス, ドメイン, セキュア, httponly );
ここにCookieのオプション一覧表
Cookieはヘッダー情報のため、<html>
やecho
などの出力よりも前に設定する必要があります。
Cookieの取得
保存したCookieは$_COOKIE
で取得できます。
$_COOKIEで取得
1 2 |
// クッキー名「pref」を取得 $_COOKIE['pref']; |
以下サンプルでは、setcookie()で設定したCookieをブラウザに表示させてみます。
1 2 3 4 5 6 7 8 |
// Cookieの設定 setcookie('pref', 'tokyo'); // 設定したCookieを取得し変数に代入 $pref = $_COOKIE['pref']; // ブラウザに表示 echo $pref; |
tokyo
Cookieの値が表示されました。
Cookieはヘッダー情報のため、Cookieを設定後、ページがロードされたら反映されます。
Cookieを保存、取得できない場合
setcookie()
で値が保存できなかったり、$_COOKIE
で値が取得できない場合は、以下の要因を疑ってみましょう。
setcookie()
は、ユーザーエージェントやリファラーなどのヘッダー情報とともに送信するクッキーを設定するものです。
<html>
やecho
などですでに何らかを出力していた場合、setcookie()
は使えません。