PHP 5 クッキー

❮ 前章へ 次章へ ❯

クッキーは、ユーザを識別するのによく使われます。


クッキーとは?

クッキーは、ユーザーを識別するためによく使われます。クッキーは、サーバがユーザのコンピューターに埋め込む小さなファイルです。 同じコンピュータが、ブラウザを使用してページを要求するたびに、クッキーも送信されます。 PHPを使用すると、クッキーの値を作成したり、取得することができます。


PHPでクッキーを作成する

クッキーは、setcookie()関数で作成します。

構文

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

name パラメータだけが必須で、その他のパラメータはすべて任意です。


PHP クッキーの作成/取得

次の例は、値が "John Doe" である "user"という名前のクッキーを作成します。クッキーは30日後に失効します(86400 * 30)。 "/" は、webサイト全体でクッキーが使用可能であることを意味します(その他の場合は、好きなディレクトリを選択します)。

次に、クッキー "user"の値を取得します(グローバル変数$_COOKIEを使用します)。 また、isset()関数を使用して、Cookieが設定されているかどうかを調べます:

<?php
$cookie_name = "user";
$cookie_value = "John Doe";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day
?>
<html>
<body>

<?php
if(!isset($_COOKIE[$cookie_name])) {
    echo "Cookie named '" . $cookie_name . "' is not set!";
} else {
    echo "Cookie '" . $cookie_name . "' is set!<br>";
    echo "Value is: " . $_COOKIE[$cookie_name];
}
?>

</body>
</html>
例の実行 »

注: setcookie()関数は、<html>タグの前に現れなければなりません。

注: クッキーの値は、クッキーが送信される時に自動的にURLエンコードされ、受信時に自動的にデコードされます (URLエンコードをしない場合は、代わりにsetrawcookie()を使用してください)。


クッキー値の変更

クッキーを変更するには、setcookie()関数を使ってクッキーを設定し直してください:

<?php
$cookie_name = "user";
$cookie_value = "Alex Porter";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");
?>
<html>
<body>

<?php
if(!isset($_COOKIE[$cookie_name])) {
    echo "Cookie named '" . $cookie_name . "' is not set!";
} else {
    echo "Cookie '" . $cookie_name . "' is set!<br>";
    echo "Value is: " . $_COOKIE[$cookie_name];
}
?>

</body>
</html>
例の実行 »

クッキーの削除

クッキーを削除するには、有効期限を経過した日付を設定したsetcookie()関数を使用します:

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

<?php
echo "Cookie 'user' is deleted.";
?>

</body>
</html>
例の実行 »

クッキーが有効かどうかを確認する

次の例は、クッキーが有効かどうかを確認する小さなスクリプトを作成します。 まず、setcookie()関数でテストクッキーを作成し、$_COOKIE配列変数を数えます:

<?php
setcookie("test_cookie", "test", time() + 3600, '/');
?>
<html>
<body>

<?php
if(count($_COOKIE) > 0) {
    echo "Cookies are enabled.";
} else {
    echo "Cookies are disabled.";
}
?>

</body>
</html>
例の実行 »

完全なPHP HTTPリファレンス

HTTP関数の完全なリファレンスについては、完全な PHP HTTPリファレンスをご覧ください。


❮ 前章へ 次章へ ❯