【PHP】ユーザーにcookie(クッキー)を渡す方法
通常のWebサイトではアクセスしてきたユーザーにcookieを渡すことはあまりないかと思いますが、商業サイトや何かしらの条件分岐をしたいときにcookieの設定は有効です。
ここではアクセスしてきたユーザー(のブラウザ)にcookieを渡す方法を説明したいと思います。
cookieを渡す方法
方法はいたって簡単で、setcookie関数を使うだけです。
第1引数は渡すcookieの名前、第2引数はcookieの値、第3引数はcookieの有効期限、第4引数はcookieを有効とするパス指定です。
setcookie('name','value', time()+60*60*24, '/');
これでcookie名が「name」、値が「value」、有効期限が1日、サイト内全体で有効なcookieをユーザーのブラウザに渡すことができます。
有効期限について
cookieの有効期限はUnixタイムスタンプで指定します。
現在のUnixタイムをtime関数で取得して、それに有効期限までの秒数を足します。
すなわち上では「60×60×24」秒なので有効期限は1日となります。
省略したり0(ゼロ)を指定した場合、ブラウザが閉じるまでが有効期限となります。
パス指定について
「/」を指定するとサイト全体(http://○○○.com)で有効なcookieを渡し、「/hoge/」とするとhogeディレクトリ以下(http://○○○.com/hoge/~)で有効なcookieを渡すことができます。
デフォルトはcookieが渡されたカレントディレクトリで有効なcookieが渡されます。
注意点
setcookie関数は、他のあらゆる出力よりも前に送信する必要があります(基本ページ上部の一番最初に書く)。
cookieの値は、ユーザーのブラウザに渡す際、自動的にURLエンコードされます(受け取る際は自動的にデコードされる)。
また、ユーザーのブラウザに保存される情報なので重要な情報は渡さないことです。
setcookie関数は第5引数以降も指定可能なので、詳細はこちらで確認してください。
cookieを受け取る方法
setcookie関数で渡したcookieを受け取る場合、以下のようにします。
$name = $_COOKIE['name'];
これでcookie名が「name」であるcookieの値を受け取れます。
どんなcookieがあるかをすべて参照したい場合、次のようにします。
print_r($_COOKIE);
cookieを削除する方法
ユーザーに渡したcookieを削除したい場合、有効期限を過去に設定したcookieの上書きをします。
具体的には次のようにします。
setcookie('name','','time() - 3600');
これでcookie名が「name」であるcookieは削除されます。
あわせて読んでほしい!
コメント
まだコメントはありません。