ホームページ >バックエンド開発 >PHPチュートリアル >PHP setcookie() は初めて値を保存できません

PHP setcookie() は初めて値を保存できません

不言
不言オリジナル
2018-04-20 11:26:401942ブラウズ

まず、次の簡単なコードを作成します:

コードをコピーします コードは次のとおりです:

<?php 
    
setcookie(&#39;a&#39;,&#39;value&#39;);
    print $_COOKIE[&#39;a&#39;];

初めてアクセスすると、エラーが報告されます:

エラーの理由は、 $_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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。