-1

以下を試しているのですが、うまくいきません...

クッキーを作ります。php スクリプトを起動します。スクリプトは、10 秒後に Cookie のコンテンツを表示します。スクリプトの実行中に Cookie を削除します。Cookie がまだ存在するように、スクリプトが Cookie のデータを表示するのはなぜですか?

<?php
    sleep(10000);
    echo $_COOKIE['data'];
?>

Make the Cookie を作成および削除するには、Chrome 拡張機能「Edit This Cookie」を使用しました。

4

2 に答える 2

3

Cookie は、ページの HTTP 要求の一部としてブラウザーからサーバーに送信され、PHP はそれらを$_COOKIE配列に入れます。これは、スクリプトの開始直前に発生します。

を使用$_COOKIEしても、クライアントのコンピューターにアクセスして現在の Cookie をリアルタイムで取得することはありません。スクリプト中は、Cookie への変更は表示されません。ブラウザーが Cookie を再度送信するときに、ページの次の要求まで、これらの変更を検出することはできません。

于 2013-11-08T14:13:59.730 に答える
2

この問題は、PHP が Cookie を処理する方法に関係しているのではなく、Cookie の仕組みを理解していることに関係していると思われます。(あなたのコードを見なくても、これは完全で完全な憶測です。)

要するに、Cookie データはページの読み込み時にのみ発生する HTTP ヘッダーの一部として送信されるため、Cookie はコンテンツがブラウザから送受信されるときにのみ設定/読み取りされます。そのため、行った変更を確認するには、ページを再読み込みする必要があります (単純に 'x' 秒待つのではなく)。

いくつかの詳細に関して:

  1. Cookie を設定すると、これは Web サーバーからのアウトバウンド HTTP 応答でブラウザーに送信されます (その後、それに応じて保存されます)。

  2. Cookie を読み取るには、上記のように事前に設定されている必要があります。この場合、後続のブラウズ URI リクエストの一部として Web サーバーに提示されます。

  3. Cookie の削除は設定と同じルールに従うため、Cookie はブラウザからの後続のリクエストでのみ利用できなくなります。

ちなみに、[INSERT YOUR BROWSER OF CHOICE HERE] の開発者ツールを使用して上記を簡単に確認できます。リクエスト/レスポンス ヘッダーを表示するだけで、Cookie データが表示されます。

于 2013-11-08T14:14:14.443 に答える