(PHP 3, PHP 4)
setcookie() は、その他のヘッダ情報と共に 送信するクッキーを定義します。 name を除くすべての引数はオプションです。 クッキーは他のヘッダーを送信する 前に 送信 される必要があります。(これはクッキーの制約であってPHPの制約では ありません)この制約により html または head タグの前にこの関数をコールする 必要があります。
引数 name 以外の全ての引数はオプションです。 name 引数のみが指定された場合、nameという名前のクッキーはリモート クライアントから削除されます。 全ての引数に関して引数の指定をスキップするために空文字列 ("")とすることが可能です。 expire および secure 引数 は空文字列でスキップすることはできません。代わりにゼロ (0 )を使用してください。 expire 引数は、 time() または mktime() 関数により 返されたUNIX標準時を現す整数です。 secure は、クッキーがHTTPS接続によってのみ 伝送されることを指定します。
陥りやすい失敗:
クッキーはクッキーを有効にするためにページを再ロードするまで アクセスすることができません。
クッキーは設定されたものと同じパラメータで削除する必要がありま す。
PHP 3において同じスクリプトで setcookie() を複数 回コールした場合、逆の順番で実行されます。他のクッキーを挿入する 前にあるクッキーを削除しようとする場合、削除する前に挿入を行う必 要があります。PHP 4では、 setcookie() を複数回コー ルした場合でもコールした順番で実行されます。
クッキーを送信するいくつかの例を以下に示します。
例 1 setcookie() による送信の例
上記の例で送信したクッキーを削除する方法の例を以下に示します。
例 2 setcookie() による削除の例
クッキーのvalueの部分は、クッキーの送信を行う際に自動的に URLエンコードされ、またクッキーを受信した際は、自動的にデコード されてクッキー名と同じ名前の変数に格納されることに注意して下さい。 すなわち、スクリプト内部でTestCookieの内容を見たい場合は、以下 の例のうちの一つを使用して下さい。
クッキー名で配列を記述することにより、クッキーの配列を設定するこ とも可能です。これにより配列要素と同数のクッキーを設定されますが、 クッキーがスクリプトに受信された際に、値はクッキー名を有する配列 に置きかえられます。
クッキーに関する詳細は、 http://www.netscape.com/newsref/std/cookie_spec.html にあるNetscapeのクッキーに関する仕様をご覧ください。
サービスパック1を適用したMicrosoftインターネットエクスプローラ4 は、パスに関するパラメータを設定したクッキーを正確に処理することが できません。
Netscape Communicator 4.05およびMicrosoft Internet Explorer 3.x は、pathとtime が設定されていない場合、クッキーを正確に処理する ことができないようです。