PHP マニュアル
前のページ |  | 次のページ

# setcookie

(PHP 3, PHP 4 )

setcookie -- クッキーを送信する

## 説明

int setcookie ( string name, string `[value]`, int `[expire]`, string `[path]`, string `[domain]`, int `[secure]`)

setcookie() は、その他のヘッダ情報と共に 送信するクッキーを定義します。`name` を除くすべての引数はオプションです。 クッキーは他のヘッダーを送信する前に送信 される必要があります。(これはクッキーの制約であってPHPの制約では ありません)この制約により`<html>`または `<head>`タグの前にこの関数をコールする 必要があります。

引数`name`以外の全ての引数はオプションです。 name 引数のみが指定された場合、nameという名前のクッキーはリモート クライアントから削除されます。 全ての引数に関して引数の指定をスキップするために空文字列 ("")とすることが可能です。 `expire`および `secure` 引数 は空文字列でスキップすることはできません。代わりにゼロ (0)を使用してください。 `expire`引数は、 time() または mktime() 関数により 返されたUNIX標準時を現す整数です。 `secure`は、クッキーがHTTPS接続によってのみ 伝送されることを指定します。

陥りやすい失敗:

- クッキーはクッキーを有効にするためにページを再ロードするまで アクセスすることができません。

- クッキーは設定されたものと同じパラメータで削除する必要がありま す。

PHP 3において同じスクリプトでsetcookie()を複数 回コールした場合、逆の順番で実行されます。他のクッキーを挿入する 前にあるクッキーを削除しようとする場合、削除する前に挿入を行う必 要があります。PHP 4では、setcookie()を複数回コー ルした場合でもコールした順番で実行されます。

クッキーを送信するいくつかの例を以下に示します。

例 1setcookie()による送信の例

    setcookie ("TestCookie", "Test Value");
    setcookie ("TestCookie", $value,time()+3600);  /* 1時間で期限切れ */
    setcookie ("TestCookie", $value,time()+3600, "/~rasmus/", ".utoronto.ca", 1);

上記の例で送信したクッキーを削除する方法の例を以下に示します。

例 2setcookie()による削除の例

    setcookie ("TestCookie");
    // 有効期限を1時間前に設定する
    setcookie ("TestCookie", "", time() - 3600);
    setcookie ("TestCookie", "", time() - 3600, "/~rasmus/", ".utoronto.ca", 1);

クッキーを削除する場合には、ブラウザの削除機構を起動するために必 ず有効期限を過去に設定する必要があります。

クッキーのvalueの部分は、クッキーの送信を行う際に自動的に URLエンコードされ、またクッキーを受信した際は、自動的にデコード されてクッキー名と同じ名前の変数に格納されることに注意して下さい。 すなわち、スクリプト内部でTestCookieの内容を見たい場合は、以下 の例のうちの一つを使用して下さい。

    echo $TestCookie;
    echo $HTTP_COOKIE_VARS["TestCookie"];

クッキー名で配列を記述することにより、クッキーの配列を設定するこ とも可能です。これにより配列要素と同数のクッキーを設定されますが、 クッキーがスクリプトに受信された際に、値はクッキー名を有する配列 に置きかえられます。

    setcookie ("cookie[three]", "cookiethree");
    setcookie ("cookie[two]", "cookietwo");
    setcookie ("cookie[one]", "cookieone");
    if (isset ($cookie)) {
        while (list ($name, $value) = each ($cookie)) {
            echo "$name == $value<br>\n";
        }
    }

クッキーに関する詳細は、http://www.netscape.com/newsref/std/cookie_spec.html にあるNetscapeのクッキーに関する仕様をご覧ください。

サービスパック1を適用したMicrosoftインターネットエクスプローラ4 は、パスに関するパラメータを設定したクッキーを正確に処理することが できません。

Netscape Communicator 4.05およびMicrosoft Internet Explorer 3.x は、pathとtime が設定されていない場合、クッキーを正確に処理する ことができないようです。

前のページ | ホーム | 次のページ
headers_sent | 上に戻る | Hyperwave 関数