PHP クッキー

cookie はユーザーを識別するためによく使用されます。

cookie とは何ですか?

cookie はユーザーを識別するためによく使用されます。cookie はサーバーがユーザーのコンピュータに残す小さなファイルです。同じコンピュータがブラウザを使用してページをリクエストするたびに、cookie が同時に送信されます。PHP を使用して、cookie を作成および値を取得することができます。

cookie をどうやって作成しますか?

setcookie() 関数は cookie を設定するために使用されます。

注記:setcookie() 関数は <html> タグの前に配置する必要があります。

文法

setcookie(name, value, expire, path, domain);

以下の例では、"user" という名前の cookie を作成し、それに値 "Alex Porter" を設定しました。また、この cookie は 1 時間後に有効期限が切れます:

<?php 
setcookie("user", "Alex Porter", time()+3600);
?>
<html>
<body>
</body>
</html>

注記:cookie を送信する際には、cookie の値は自動的に URL エンコードされ、取得時に自動的にデコードされます(URL エンコードを防ぐために、setrawcookie() を使用してください)。

Cookie の値をどうやって取得しますか?

PHP の $_COOKIE 変数は cookie の値を取得するために使用されます。

以下の例では、"user" という名前の cookie の値を取得し、それをページに表示しました:

<?php
// cookie を表示する
echo $_COOKIE["user"];
// 全ての cookie を表示する方法
print_r($_COOKIE);
?>

以下の例では、isset() 関数を使用して cookie が設定されているか確認します:

<html>
<body>
<?php
if (isset($_COOKIE["user"]))
  echo "ようこそ " . $_COOKIE["user"] . "!<br />";
else
  echo "ようこそゲスト!<br />";
?>
</body>
</html>

cookie を削除する方法は?

cookie を削除する際には、有効期限を過去の時間点に設定する必要があります。

削除の例:

<?php 
// set the expiration date to one hour ago
setcookie("user", "", time()-3600);
?>

ブラウザが cookie をサポートしない場合にどうすればいいですか?

アプリケーションが cookie をサポートしないブラウザを含む場合、アプリケーション内で一つのページから別のページに情報を伝えるための他の方法を取る必要があります。一つの方法は、フォームからデータを渡すことです(フォームとユーザー入力の内容については、この講座の前半で紹介しました)。

以下のフォームは、ユーザーが提交ボタンをクリックしたときに "welcome.php" にユーザー入力を送信します:

<html>
<body>
<form action="welcome.php" method="post">
Name: <input type="text" name="name" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>
</body>
</html>

"welcome.php" 中的値を取回す方法はこちらです:

<html>
<body>
ようこそ <?php echo $_POST["name"]; ?>.<br />
あなたは <?php echo $_POST["age"]; ?> 歳です。
</body>
</html>