PHP setcookie()関数


PHP HTTP 参考手册完全なPHP HTTPリファレンスマニュアル

定義と用法

setcookie() 関数はクライアントにHTTP cookieを送信します。

cookieはサーバーからブラウザに送信される変数です。cookieは通常、サーバーがユーザーのコンピュータに埋め込む小さなテキストファイルです。同じコンピュータがブラウザを介してページをリクエストするたびに、このcookieが送信されます。

cookieの名前は自動的に同じ名前の変数として指定されます。例えば、送信されたcookieの名前が "user" の場合、$user という名前の変数が自動的に作成され、cookieの値を含みます。

cookieには、他の出力をクライアントに送信する前に値を設定する必要があります。

成功した場合、この関数はTRUEを返します。失敗した場合はFALSEを返します。

構文

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

パラメータ 説明
name 必須。cookieの名前を指定します。
value 必須。cookieの値を指定します。
expire オプション。cookieの有効期限を指定します。

time()+3600*24*30 はcookieの有効期限を30日間に設定します。このパラメータが設定されていない場合、cookieはセッション終了後(つまりブラウザを閉じたとき)に自動的に無効になります。

path オプション。cookieのサーバーパスを指定します。

パスが "/" に設定されている場合、cookieはドメイン全体で有効です。パスが "/test/" に設定されている場合、cookieはtestディレクトリとそのすべてのサブディレクトリで有効です。デフォルトのパス値は、cookieが配置されている現在のディレクトリです。

domain オプション。cookieのドメインを指定します。

cookieをexample.comのすべてのサブドメインで有効にするには、cookieのドメインを".example.com"に設定する必要があります。cookieのドメインをwww.example.comに設定すると、cookieはwwwサブドメインでのみ有効になります。

secure オプション。安全なHTTPS接続でcookieを転送する必要があるかどうかを指定します。cookieを安全なHTTPS接続で転送する必要がある場合はTRUEに設定します。デフォルトはFALSEです。


ヒントと注意

ヒント:$HTTP_COOKIE_VARS["user"] または $_COOKIE["user"] を使用して、"user" という名前のcookieの値にアクセスできます。

注:cookieを送信するとき、cookieの値は自動的にURLエンコードされます。受信時には自動的にURLデコードされます。これが不要な場合は、代わりにsetrawcookie()を使用できます。


例1

cookieを設定して送信します:

<?php
$value = "my cookie value";

// send a simple cookie
setcookie("TestCookie",$value);
?>

<html>
<body>

...
...

<?php
$value = "my cookie value";

// send a cookie that expires in 24 hours
setcookie("TestCookie",$value, time()+3600*24);
?>

<html>
<body>

...
...


例2

cookieの値を取得するさまざまな方法(cookie設定後):

<html>
<body>

<?php
// Print individual cookies
echo $_COOKIE["TestCookie"];
echo "<br />";
echo $HTTP_COOKIE_VARS["TestCookie"];
echo "<br />";

// Print all cookies
print_r($_COOKIE);
?>

</body>
</html>

上記のコードは次のように出力します:

my cookie value
my cookie value
Array ([TestCookie] => my cookie value)


例3

有効期限を過去の日付/時刻に設定してcookieを削除します:

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

<html>
<body>

...
...


例4

配列cookieを作成します:

<?php
setcookie("cookie[three]","cookiethree");
setcookie("cookie[two]","cookietwo");
setcookie("cookie[one]","cookieone");

// print cookies (after reloading page)
if (isset($_COOKIE["cookie"]))
{
foreach ($_COOKIE["cookie"] as $name => $value)
{
echo "$name : $value <br />";
}
}
?>

<html>
<body>

...
...

上記のコードは次のように出力します:

three : cookiethree
two : cookietwo
one : cookieone


PHP HTTP 参考手册完全なPHP HTTPリファレンスマニュアル その他の拡張機能