まず、次の簡単なコードを作成します:
コードをコピーします コードは次のとおりです:
<?php setcookie('a','value'); print $_COOKIE['a'];
初めてアクセスすると、エラーが報告されます:
エラーの理由は、 $_COOKIE['a'] の値が存在しません。 2 回目の訪問:
Q: 最初の訪問時に Cookie がないのはなぜですか? ?最初に設定してから取得する必要はありませんか? ?
回答: Firefox の firebug を使用して「ネットワーク」を表示します:
クライアント:
リクエストを行うときに、ブラウザ (クライアント) がサーバーにリクエストを送信することがわかります。リクエスト ヘッダー情報が含まれています。さまざまなパラメータをアップロードし、どのような種類のテキストを受信するか (Accept)、どのようなエンコード形式 (Accept-Encoding)、どの言語 (Accept-Language) などをサーバーに伝えます。そして、もちろん Cookie も渡します。サーバー (Cookie) に送信します。
サーバー側:
ステップ1: setcookie('a','value')
Cookieはクライアント側で設定されるため、setCookie関数自体はCookieを設定できません。ヘッダー情報を通じてのみブラウザーに通知できます。言った: 兄弟、クッキーを設定したいのですが、キーは a、値は値です。あなたのところで設定するのを手伝ってください。 「さあ、今日は幸せだからクッキーをあげるね。」とも理解できます。
2 番目のステップ: $_COOKIE['a']$_COOKIE['a']
操作は非常に簡単で、ブラウザーによってもたらされた Cookie 文字列からキー a を持つ Cookie を検索し、その値を返します。
明らかに、「キー a」を持つこの Cookie は見つかりません。クライアントがサーバーにアクセスするとき、この Cookie はまったく存在せず、Cookie ヘッダー情報を設定する前のステップがまだ返されていないからです。クライアントへ(phpはクライアントに戻る前に上から下までステートメントを実行する必要があります)
ステップ3:サーバーは情報を返します
このうち、返されるヘッダー情報には「Set-Cookie」が含まれています a=value" の場合、ブラウザはこのヘッダー情報を受け取り、コンピューター上のファイルに Cookie を保存します。Cookie の保存場所はブラウザごとに異なるようです。これはこの記事の範囲を超えています。
ブラウザを更新し、再度サーバーにアクセスすると、多くのヘッダー情報もサーバーに持ち込まれますが、今回はCookieに余分なa=valueがあるため、$_COOKIE['a']が自然に取得されますそこから、Cookie 文字列内のキー a を持つ Cookie の値を見つけます。
以上がPHP setcookie() は初めて値を保存できませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。