ホームページ >バックエンド開発 >PHPチュートリアル >同じ名前でパスが異なる Cookie

同じ名前でパスが異なる Cookie

WBOY
WBOYオリジナル
2016-06-23 13:55:181197ブラウズ

プロジェクトでは、複数の COOKIE を使用してユーザーのステータスを共同で決定します
背景は次のとおりです

ユーザー ID ユーザーコード ユーザー名

3 つの COOKIE がすべて存在する場合、セッションが存在するかどうかを判断します。それ以外の場合は、Cookie を削除し、セッションが存在するかどうかを確認します。

最初は JS を使用して COOKIE を生成していましたが、その後、別の理由で PHP を使用して COOKIE を生成することにしました

テスト中に、ログインとホームページの間に無限ループがあることがわかりました。 COOKIE の状況では、テストしたときにプロジェクトがサブディレクトリで実行されていたため、JS によって生成された COOKIE がまだ存在していることがわかりました。実験と Baidu の後、同じ COOKIE が複数あることがわかりました。名前と別のパス
ページがルート ディレクトリにある場合は、ディレクトリの下にあるものを取得します
ページがサブディレクトリにある場合は、サブディレクトリの下にあるものを取得します

http://jinnianshilongnian.iteye.com/blog/ 1656534 ここで学習してください
java.net.HttpURLConnection のツール/フレームワークを使用します。同じパスに同じ名前の Cookie が複数ある場合、最初の Cookie が取得されます。
Apache HttpClient を使用して、最後のものを取得するのと同じです。 1つ。

つまり、最新の COOKIE が取得されることになります

ただし、IE と Google Chrome を使ってテストした結果は

サブディレクトリ配下のページは、PATH がカレントディレクトリの COOKIE の順で取得されます上のディレクトリを取得すれば時間が経っても戻ります。最新の COOKIE を取得する方法はありません

そして、私のプロジェクトのロジックによれば、PHP はどのディレクトリの COOKIE を取得しているのかを知ることができず、この COOKIE を削除することもできず、無限ループが続くことになります。 。 。 。解決する

ディスカッションに返信する (解決策)

サーバーごとに違いがあります。 例:

/ の下に Cookie (actionType) を作成する場合、Firefox では /a の下に同じ名前の Cookie があります。 Cookie を設定すると、Firefox は /a の下の Cookie を直接読み取り、/ の下の Cookie (つまり、親パスの Cookie) を無視します。つまり、/a のアクションが空の場合、Firefox はそのアクションが空であると認識します。


対照的に、IE では /a の下の Cookie (アクション) を読み取る場合、/a の下の Cookie が空であっても、IE は親 Cookie を読み取ります。これは、親パス Cookie を変更することと同じです。サブパス Cookie と一緒に読み取られます。ただし、このパス Cookie が最初に読み取られます。

したがって、Cookie を使用する場合は、サーバーが Cookie を設定するようにしてください。

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