2

2 つの IP アドレスを持つバランスの取れたゲートウェイを介してクライアントをホスティング サーバーに接続すると、PHP でセッションの奇妙な動作が発生します。

Cookie を使用してセッションを正しく初期化し、セッションのブール変数を設定し、デバッグのために次の情報を出力します。

    echo var_dump($_SESSION["islogged"]);
    echo var_dump(session_id());
    echo var_dump($_SERVER["REMOTE_ADDR"]);

ページを何度も更新すると、次の 2 つの結果が得られます。

bool(false) string(26) "ism1vg1de6v0b1r8b2ng337uh3" string(13) "48.129.84.146" 
bool(true) string(26) "ism1vg1de6v0b1r8b2ng337uh3" string(13) "96.19.184.38" 
bool(true) string(26) "ism1vg1de6v0b1r8b2ng337uh3" string(13) "96.19.184.38" 
bool(false) string(26) "ism1vg1de6v0b1r8b2ng337uh3" string(13) "48.129.84.146" 
bool(false) string(26) "ism1vg1de6v0b1r8b2ng337uh3" string(13) "48.129.84.146" 
bool(true) string(26) "ism1vg1de6v0b1r8b2ng337uh3" string(13) "96.19.184.38" 
...

セッションは同じですが、セッション バーが変わります。これを解決する方法を知っていますか?

これはログインチェックです:

$ISLOGGED=!empty($_SESSION["islogged"]) 

そして、これはログオンコードです:

$ISLOGGED=$_SESSION["islogged"]=$_POST["password"]==$password;
4

1 に答える 1

0

リモート IP アドレスを使用して追加のセッション マングリングを行う suhosin を使用している可能性があります。構成内のcryptraddr と checkraddr の値を再確認することをお勧めします。

于 2013-05-22T14:24:23.123 に答える