PHPでのCookieの使い方と保存できない場合(setcookie, $_COOKIE)

  • このエントリーをはてなブックマークに追加
  • Pocket

スポンサードリンク

PHPでCookieを保存したり、取得、送信する方法です。またCookieを保存できない原因などもご紹介します。

Cookieの保存

Cookieに値を保存するにはsetcookie()を使います。

setcookie()の基本的な使い方

setcookie()の第1引数にクッキー名、第2引数にクッキーに入れたい値を設定します。

tokyo

Cookieに有効期限を設定

setcookie()の第3引数に有効期限を設定することもできます。

第3引数を省略した場合、ブラウザを閉じたらCookieも消滅します。

30日間有効のCookieを設定しました。

1つのCookieに複数の値を配列で格納

次に1つのCookieに複数の値を格納してみます。

Cookieを定義しているRFC6265によれば、Cookieの使用は1ドメイン50個までに制限されているため、多量のCookie扱う場合は、配列で複数の値を格納するなど節約する必要があります。

以下のように配列形式で格納されました。

Array ( [1] => tokyo [2] => kanagawa [3] => chiba )

setcookie()の構文

setcookie()には有効期限以外にも様々なオプションを設定できます。

setcookie ( クッキー名, 値, 有効期限, パス, ドメイン, セキュア, httponly );

ここにCookieのオプション一覧表

Cookieはヘッダー情報のため、<html>echoなどの出力よりも前に設定する必要があります。

Cookieの取得

保存したCookieは$_COOKIEで取得できます。

$_COOKIEで取得

以下サンプルでは、setcookie()で設定したCookieをブラウザに表示させてみます。

tokyo

Cookieの値が表示されました。

Cookieはヘッダー情報のため、Cookieを設定後、ページがロードされたら反映されます。

Cookieを保存、取得できない場合

setcookie()で値が保存できなかったり、$_COOKIEで値が取得できない場合は、以下の要因を疑ってみましょう。

何らかの出力のあとにsetcookie()を設定している

setcookie()は、ユーザーエージェントやリファラーなどのヘッダー情報とともに送信するクッキーを設定するものです。

<html>echoなどですでに何らかを出力していた場合、setcookie()は使えません。

スポンサードリンク

  • このエントリーをはてなブックマークに追加
  • Pocket

コメントを残す

*