PHP Cookie


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


Cookie とは?

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


Cookie を作成するには?

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

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

構文

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

例 1

次の例では、名前が "user" の Cookie を作成し、それに値 "サンプル" を代入します。また、この Cookie は 1 時間後に期限切れになるように設定します。

<?php
setcookie("user", "サンプル", time()+3600);
?>

<html>
.....

注記:Cookie を送信するとき、Cookie の値は自動的に URL エンコードされ、取得時に自動的にデコードされます。(URL エンコーディングを防ぐには、代わりに setrawcookie() を使用してください。)

例 2

別の方法で Cookie の有効期限を設定することもできます。これは、秒で指定する方法よりも簡単かもしれません。

<?php
$expire=time()+60*60*24*30;
setcookie("user", "サンプル", $expire);
?>

<html>
.....

上記の例では、有効期限は1か月に設定されています(60 秒 * 60 分 * 24 時間 * 30 日)。


Cookie の値を取得するには?

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

次の例では、名前が "user" の Cookie の値を取得し、それをページに表示しています。

<?php
// 输出 cookie 值
echo $_COOKIE["user"];

// 查看所有 cookie
print_r($_COOKIE);
?>

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

<html>
<head>
<meta charset="utf-8">
<title>サンプル(example.com)</title>
</head>
<body>

<?php
if (isset($_COOKIE["user"]))
    echo "欢迎 " . $_COOKIE["user"] . "!<br>";
else
    echo "普通访客!<br>";
?>

</body>
</html>


Cookie を削除するには?

Cookie を削除するときは、有効期限を過去の時点に変更する必要があります。

削除の例:

<?php
// 设置 cookie 过期时间为过去 1 小时
setcookie("user", "", time()-3600);
?>


ブラウザが Cookie をサポートしていない場合はどうすればよいですか?

アプリケーションが Cookie をサポートしていないブラウザーを扱う必要がある場合は、アプリケーション内のページ間で情報を渡すために別の方法を使用する必要があります。1つの方法は、フォームを介してデータを渡すことです(フォームとユーザー入力については、このチュートリアルの前の章で説明しました)。

次のフォームは、ユーザーが "Submit" ボタンをクリックすると、ユーザー入力を "welcome.php" に送信します:

<html>
<head>
<meta charset="utf-8">
<title>サンプル(example.com)</title>
</head>
<body>

<form action="welcome.php" method="post">
名字: <input type="text" name="name">
年龄: <input type="text" name="age">
<input type="submit">
</form>

</body>
</html>

"welcome.php" ファイル内の値を、次のように取得します:

<html>
<head>
<meta charset="utf-8">
<title>サンプル(example.com)</title>
</head>
<body>

欢迎 <?php echo $_POST["name"]; ?>.<br>
你 <?php echo $_POST["age"]; ?> 岁了。

</body>
</html>
その他の拡張機能