1

$_SESSION['user']="logged"ユーザーが認証されたら設定するPHPアプリケーションがあります。これを loginpage.php と呼びます。

認証され、セッション変数が設定されると、ユーザーは次の行で始まるメンバー ページに移動します。

<?php
session_set_cookie_params(0,'/');
session_start();
if($_SESSION['user'] != 'logged') {
header ("Location:loginpage.php");
}?>

ユーザーがログインし、ブラウザーを閉じてからメンバー ページにアクセスすると、loginpage.php にリダイレクトされることを期待しています。

ただし、これは起こりません。セッション Cookie はまだブラウザに残っています - 私はこれを Firefox を使ってテストしました。

誰かが私がどこで間違っているのか説明してもらえますか?

4

4 に答える 4

4

受け入れられたものを含む上記の答えは間違っています。

著名なブラウザー開発者によるいくつかの設計上の決定により、セッション Cookie はブラウザーを閉じても期限切れになりません。

基本的に、セッションの有効期限が切れる Cookie は、ブラウザが更新をダウンロードしてから再起動を要求する現在のブラウザの動作を妨げていました。このような更新の後、ユーザーはブラウザを再起動し、可能な限り混乱を最小限に抑えたいと考えています。ただし、元のセッション Cookie の動作を維持すると、ブラウザーの更新中に多数の Cookie が即座に消去され、プロセスが再起動され、ユーザー エクスペリエンスが損なわれます。したがって、デフォルトの動作がセッション Cookie をクリアしないように設計が決定されました。元の動作に戻したい上級ユーザーは、通常、特定の下位互換性オプションまたは明示的な Cookie クリア オプションを有効にする必要があります。

于 2015-06-29T11:19:48.353 に答える
3

Cookie の有効期間を 0 に設定したため、Cookie を削除する必要があります。

Firefox プロセスがまだ実行されている可能性があります。タスク マネージャーを調べてください。

于 2010-10-06T03:37:11.323 に答える
1

また、header('Location:') の後にスクリプトを終了する必要があります。それ以外の場合は、実行を継続し、「安全な」ページをクライアントに出力します (または、うまくいけばそれを無視する Web サーバーに運が良ければ) とにかく、リソースを消費します。

于 2010-10-06T15:16:06.260 に答える
0

ここを見てください

「有効期限のタイムスタンプは、サーバー時間に対して相対的に設定されます。これは、クライアントのブラウザーの時間と必ずしも同じではありません。」

それかもしれません... わかりません。

于 2010-10-06T03:41:01.710 に答える