0

重複の可能性:
Firefox セッション Cookie

私はこのコードを持っています

session_start();

$_SESSION['login'] = "bla";

var_dump($_SESSION);

このページを Firefox で実行し$_SESSION['login'] = "bla";、スクリプトからこの行を削除し、ブラウザを閉じて再度開くと、Firefox は次のように表示します。["login"]=> string(3) "bla"

つまり、Firefox はブラウザを閉じた後にセッション データを保存します。なぜこれが起こるのですか?

PSこれはfirefoxでのみ発生し、他のブラウザはすべて期待どおりに動作します。つまり、結果は空の配列です。

4

2 に答える 2

0

Firefox は $_SESSION を保存できません。$_SESSION は完全にサーバー側の変数です。サーバー上の適切なユーザーセッションを見つけるためにphpのみが使用するセッションCookieを設定することを除いて、Firefoxにはありません。

を取得している理由["login"]=> string(3) "bla"は、最初の実行で設定したためです。これを行う:

最初にスクリプトを実行します

session_start();

$_SESSION['login'] = "bla";

var_dump($_SESSION);

$_SESSION['login'] = "bla";次に、スクリプトから行を削除して実行します。ログインキーがセッション変数に設定されていることをまだ示しているはずです。次に、別のスクリプトを実行します。

session_start();

$_SESSION['login'] = null;
// OR 
// unset($_SESSION['login']);

var_dump($_SESSION);

次に、Session 変数の値を確認しようとすると、'login' キーの値が表示されなくなります。

私が言いたいのは、セッションで何かを設定すると、それが持続し、スクリプトを実行するたびに設定する必要がないということです。セッション変数から値を削除するには、明示的に削除する必要があります。

于 2012-12-16T14:38:00.573 に答える
0

正しいバージョンのスクリプトをテストしていますか? たとえば、現在の時刻をエコーするなど、テスト スクリプトに別の何かを追加したい場合があります。

ここで考えられる状況の 1 つは、ブラウザーのすべてのインスタンスが同じ Cookie jar を共有しているという事実です。ブラウザーに強制的にセッション Cookie を削除させるには、すべてのウィンドウとタブを閉じる必要があります。これは「実生活」では決して問題ではありませんが、ログアウトできないように見えると、開発者を怒らせることがよくあります。

于 2012-12-16T14:05:45.450 に答える