@ PHP

cookie:クッキー

cookie は Web サイト(Web サーバ側)が指定したデータを保存しておくことができ、利用者の識別や属性に関する情報、最後にサイトを訪れた日時などを記録しておくことができます。ネットサービスなどのサイトで利用者の ID などが保存されると、次にアクセスしたときに自動的に利用者の識別が行われ、前回の続きのようにサービスを受けることができます。ユーザ識別やセッション管理を実現する目的などに利用されます。

クッキーの操作

クッキーを設定する

クッキーを設定するためには、setcookie() 関数を使います。これはクッキーの名前と値を覚えて、後で要求されたときにサーバに送り返すように Web クライアントに教えます。

cookie_01.php

<?php
setcookie('userid','ralph');
?>

クッキー値を出力する

PHPから前回設定されたクッキーを読み出すためには、$_COOKIE オートグローバル関数を使います。

cookie_02.php

<?php
print 'Hello,'.$_COOKIE['userid'];
?>

setcookie()でページを開始する

クッキーは、空白も含め、あらゆる出力よりも前にこの関数をコールするようにしなければなりません。

cookie_03.php

<?php
setcookie('userid','ralph');
?>
<!DOCTYPE html>
<html lang="ja">

<head>
<title>Page with cookies</title>
</head>

<body>
  <p>cookie を設定する場合は、setcookie() を含む PHP ブロックを すべての HTML の前に記述します。</p>
</body>

</html>

クッキーの失効を設定する

クッキーのデフォルトの寿命は Web クライアントの寿命です。ブラウザーを終了するときクッキーは削除されます。クッキーの寿命を延ばすため(または短くするため)には、setcookie() に3番めの引数を使います。

cookie_04.php

<?php
// 1時間後に期限切れになるクッキー
setcookie('short-userid','ralph',time()+60*60);
// 1日後に期限切れになるクッキー
setcookie('longer-userid','ralph',time()+60*60*24);
// 2014/10/20の正午に期限切れになるクッキー
setcookie('much-longer-userid','ralph',mktime(12,0,20,10,2014));
?>

クッキーを削除する

クッキーを削除するには、削除したいクッキーの名前と値として空の文字列を持たせて setcookie() を呼び出します。

cookie_05.php

<?php
setcookie('userid',' ');
?>

クッキーの利用

cookie_06.php は1度目のアクセスで入力したメールアドレスをクッキーに保存し、2度目以降のアクセスでデフォルト表示するサンプルです。

cookie_06.php

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>sample</title>
</head>
<body>
  <form method="POST" action="cookie_07.php">
    <label for="email">メールアドレス:</label> <input id="email" type="text"
      name="email" size="40" value="<?=$_COOKIE['email'] ?>" />
    <input type="submit" value="送信" />
  </form>
</body>
</html>

cookie_07.php

<?php setcookie('email', $_POST['email'], time() + (60 * 60 * 24 * 90)); ?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>sample</title>
</head>
<body>クッキーを保存しました。
</body>
</html>