2

ユーザーログインでウェブサイトを構築しました。ここで、何らかの理由でサイトのIPとサイトのドメインから入力すると、別のセッションが作成されます。

Webサイトでは、次の名前のグローバルパラメータを使用しています。ROOTここで、

define("HOST", "localhost/final-project-management-system");
define("ROOT", "http://".HOST."/");

ウェブサイトに関連するリンクをたくさんROOT掲載しています。

IPに接続しようとすると、最初のセッションが作成されますが、ROOT関係するページの1つに移動すると、新しいセッションが作成され、古いセッションが削除されます。

なぜこれが起こるのか誰かが知っていますか?

ありがとう ..

4

3 に答える 3

6

PHPセッションはCookieの範囲に基づいており、説明する動作はまさにこれがどのように機能するかです。

Cookieのスコープは、ブラウザのアドレスバーに表示されるホスト名(またはIP)に基づく文字列値によって簡単に定義されます。ホスト名が特定のIPに解決されるからといって、それらがCookieを共有することを意味するわけではありません。

考えてみれば、解決されたIPアドレスに基づいてCookieスコープを設定すると、共有ホスティング環境を検討するときに、サイト間でCookieがリークするという大きな問題が発生する可能性があります。

これを正しく機能させるには、ユーザーはDNS名またはIPアドレスの両方ではなく、いずれかを介してサイトにアクセスする必要があります。これを回避するためにセッションIDを手動で渡すことができますが、推奨されていません(とにかく、私は推奨していません)。

于 2012-08-06T22:36:41.907 に答える
0

セッションでvar_dump()を試しましたか?

var_dump($_SESSION);

PHP の先頭でsession_start()を開始しますか?

于 2012-08-06T22:37:33.383 に答える