0

Web サイトの管理パネルを管理するために使用している PHP セッションがあります。これは、2 つの変数を使用してセッションを監視しlastActionますuser。最近、私の Web サイトのある特定のページで、セッション変数userがランダムに完全に設定解除され、ユーザーがログイン ページに戻されますが、その理由がわかりません。

session_start();

$fn = "timeout.txt";
$fh = fopen($fn,'r');
$to = fread($fh,filesize($fn));

if(abs(time()-$_SESSION["lastAction"]) > $to)
{
    session_unset();
    die("Timeout");
}

var_dump($_SESSION);

//Set timeout back to 0
$_SESSION["lastAction"] = time();

if($_SESSION["user"] != "...")
{
    die("Invalid User");
    header("Location:/login");
}

タイムアウト エラーは発生せず、無効なユーザー エラーのみが発生します。

セッション変数をダンプすると、lastActionとの 2 つの値の配列が得られることuserがありますが、数秒後にページをリロードするだけでuser設定が解除されますが、設定は解除されlastActionません。

また、この例では、javascript を使用してページをリロードしています。parent.location='';

これを引き起こしている可能性のあるアイデアはありますか?

4

1 に答える 1

3

これはおそらくヘッダーに関係しています。セッション変数は、設定されているドメイン内でのみ有効です。たとえば、セッション変数を に設定してもwww.example.com、ヘッダーが にリダイレクトさexample.comれた場合、 にリダイレクトした場合と同様に、使用するセッション変数がありませんmobile.example.com。コードに表示される相対パスを変更し、それが原因であるかどうかを確認してください。

于 2013-10-18T20:14:57.447 に答える