phpのsetcookieでクッキーを送信・確認・削除・有効期限を設定

phpのsetcookieでクッキーを送信・確認・削除・有効期限を使う

phpのsetcookieでクッキーを送信・確認・削除・有効期限を設定

php関連記事

関連記事をもっとみる

cookieを送信する

php

$cookieName = 'auto_login';//クッキー名
$cookieValue = 'test';//クッキー値

setcookie( $cookieName, $cookieValue);

PHPでクッキーを保存するにはsetcookie()という関数を使います。
上のように、クッキー名とクッキー値を指定するだけで使えます。

cookieを確認する

php

echo $_COOKIE['auto_login'];

保存したクッキーを読み出すには、$_COOKIE連想配列を使います。

例えば、先ほど “auto_login” で保存したクッキーを読み出すには以下のように行います。

cookieの有効期限を設定する

php

$cookieName = 'auto_login';//クッキー名
$cookieValue = 'test';//クッキー値
$cookieExpire = time() + 3600 * 24 * 7; //有効日時 7日間

setcookie( $cookieName, $cookieValue, $cookieExpire);

上の例で保存したクッキーはブラウザを閉じると消えてしまいます。

クッキーを次回同じサイトを訪れる時まで有効にするには、クッキー保存時に有効期限を設定する必要があります。

有効期限はUNIXタイムで指定します。
UNIXタイムは秒単位で、現在のUNIXタイムは time() 関数で取得できます。
100秒間、有効にするならば time() + 100とします。
ここでは有効期限を3600秒 * 24時間 * 7で、7日後を指定しています。

cookie送信が成功したか確認する

php

if(setcookie( $cookieName, $cookieValue, $cookieExpire, $cookiePath, $cookieDomain )){
  //成功
}else{
  //失敗
}

setcookie() が正常に実行されると、true を返します。
ただし、この関数では、ユーザーがクッキーを受け入れたかどうかを判断することはできません。

cookieを削除する

php

$cookieName = 'auto_login';//クッキー名
$cookieValue = 'test';//クッキー値
$cookieExpire = time() - 360; //過去の時間を指定

setcookie( $cookieName, $cookieValue, $cookieExpire);

setcookie関数は、クッキーに情報を設定するための関数ですが、第一引数で「削除するクッキー名」を指定し、第三引数で「現在時刻より過去時間」を渡すことで、指定したクッキーの情報を削除することが可能です。

クッキーの有効期限を引数で渡すところを「過去の時間」を渡すことで、クッキーが有効期限切れの状態となり、削除されるという仕組みです。

「過去の時間」の数値は、現在より過去であればいくつを設定しても削除されます。

cookieをpathとdomeinなどその他の設定する

php

$cookieName = 'auto_login';//クッキー名
$cookieValue = 'test';//クッキー値
$cookieExpire = time() + 3600 * 24 * 7; //有効日時 7日間
$cookiePath = '/';//パス
$cookieDomain = $_SERVER['SERVER_NAME'];//ドメイン
$cookieSecure = true;//SSL
$cookieHttponly = false;//HTTPからのみ

setcookie( $cookieName, $cookieValue, $cookieExpire, $cookiePath, $cookieDomain, $cookieSecure, $cookieHttponly );

path

サーバー上のクッキーを有効とするパスを指定します。
「/」とした場合、ドメイン以下すべてでクッキーが有効になります。
「/dir/」とした場合、 dir ディレクトリ以下すべてで有効になります。

domain

クッキーを有効とするドメイン(domain)を指定します。
このドメイン配下のときのみ、クライアントへクッキーが送信されます。

secure

SSLの有無の設定。
「TRUE」にするとクライアントからHTTPS接続されたときのみクライアントへクッキーが送信されるようになります。
デフォルトでは「FALSE」です。

httponly

HTTPからのみ接続を有効とする指定です。
「TRUE」にするとHTTPを通してのみクライアントのクッキーにアクセスできるようになります。
XSS 攻撃対策でjavascriptからはアクセスできません。

コメント

タイトルとURLをコピーしました