2012-01-02 13 views
0

最初のページの読み込み時に設定される 'loginStatus'セッション変数があります。この 'loginStatus'が初めて設定されたときにブラウザに「最初に設定した」コメントを表示するif/elseがあります。 「初めてのセッティング」は決して登場しない!私はキャッシュをクリアしました。Netbeans開発環境以外のブラウザウィンドウでindex.phpページに移動しようとしましたが問題ありません。これは、セッションがlocalhost Webサーバーに永続的に存在しているかのようです。セッション変数がすでに設定されています

ここでは、初期化されていない 'loginStatus'セッション変数が最初に検出され、セッション変数が1回だけ作成/初期化されるコードを示します。

if (isset($_SESSION['loginStatus'])) 
{ 
    // we get here ONLY if the 'loginStatus' session variable has already been 
    // created for this user's session. 
    $_SESSION['loginStatus'] = "loginStatus already set!"; 
    echo '<br />Just set the loginStatus to: ' . $_SESSION['loginStatus'] . '<br /><br />';  
} 
else 
{ 
    // we only get here the first time this is sent by the server 
    // to the user's browser -- so we need to create the 'loginStatus' session 
    // variable because the user just came to our site 
    // and has not yet logged in. 
    $_SESSION['loginStatus'] = "First-time initialization of loginStatus"; 
    echo '<br />Just set the loginStatus for the first time!<br /><br />'; 
} 

私は、ブラウザのウィンドウに表示さ決して「ちょうど初めてloginStatusを設定!」

ブラウザウィンドウに表示されるのは、「loginStatusをloginStatusに設定するだけです!」と表示されています。言い換えれば

- ISSET()誤って非常に最初の時間の私のページがロードを返して!
ブラウザにページを最初に読み込んだときに魔法のようにあるセッション変数の正当性がわかりません!

私はコードを書いている間に上記のページを数回ロードしましたが、最終ページを出るとセッションが破壊されることは私の理解でした。だから私の$ _SESSION ['loginStatus']変数は、歓迎されていない親戚のようにぶら下がっているのですか?

+0

'のvar_dump($ _ SESSION)を'リロードしてそれが何を含んでいるかを見て、そこから作業してください。 – Kenaniah

+0

@Kenaniah - 私はこれを見て、これを見ました:配列 'loginStatus' =>文字列 'loginStatusがすでに設定されています!' (length = 24) – wantTheBest

+0

'session_unset();を実行します。 session_destroy(); 'を実行してサーバー側のブラウザセッションをクリアします。 – Kenaniah

答えて

1

セッションは、(セッションGCに対して)php.iniファイルのルールが設定されているときに破棄されます。これは、ブラウザを閉じたり、他のページを参照したときには必ずしも発生しません。
php.netのセッションマニュアルを読んで、最適なセッションルールを設定してください。

たとえば、セキュリティレベルの高いサイトでは、数分でセッションに時間を与えます。ユーザーがその制限時間内にサーバーに要求を行うアクションを実行しない場合、セッションは期限切れになります。

+0

「ベストプラクティス」とは、ユーザーがサイトを離れるときにセッションデータが削除されることを確認するために、プログラム上** **私のWebサイトへの最終的な通知あなたのサイトのページを残して、あなたがする必要があるクリーンアップを行いますか?これを行う一般的な方法は何ですか?確かに、ユーザーが自分のサイトで完了したときに望ましくないセッション変数を取り除くためのショットを提供する「イベント」や何かを「キャッチ」する方法があります。 – wantTheBest

+1

@wantTheBest:おい、私はトロールじゃない。期限切れのセッションは誰も気にしませんが初心者です。あなたはそれをあなたが望むくらいたくさんのフラグを立てることができます:-) **サイトを離れるイベントを「キャッチ」する方法はありません**クライアントがインターネットケーブルをちょうど外したと想像してください – zerkms

-1

ないように注意してください、 しかし、あなたはあなたのクッキーにこの値を保存する必要があるため、それは、

はCookieをクリアしようとすると、あなたのページの上部にあるページ

+0

false。セッションデータはサーバー上に保持され、決してクッキーに送られません。 PHPセッションCookieに**セッション名/ IDキーのペア**が含まれています。 –