2017-01-11 15 views
-1

これは単純なPHPコードです:維持トラックPHPのセッション

@session_start(); 
session_destroy(); 
if (isset($_SESSION['l'])) 
    echo 'Session set'; 
else 
    echo 'Session unset'; 

$_SESSION['l'] = 9; 
echo ' : ' . $_SESSION['l']; 

上記のプログラムの出力は常に セッション設定解除されます:9 すべてのセッションが session_destroyによって破壊された実行ごとに持つので、新しいセッションが作成されます。私があれば今すぐ、論理チェーンに応じて、スクリプトを再実行し

//session_destroy 

、セッションは今破壊されることはありません、そのプログラムが出力セッション設定する必要があります:私はsession_destroyをコメントしています今

: 9ではなく、まだセッション未設定:9と表示されています。しかし、スクリプトを再実行すると、出力が得られますセッションセット:9。でもsession_destroyをコメントした後、スクリプトの最初のランで9:私は未設定のセッションを取得していますなぜ

私の質問です。

+3

'session_start'は呼び出されていますか? –

+0

はい、session_startはスクリプトの先頭で呼び出されます –

+0

私はここに何かがないと思います。 session_destroyなしで初めてスクリプトを実行すると、セッションは設定されません(破棄されます)。その後、次のロード時に設定されます。問題はどこにありますか?設定する前にセッションが設定されているかどうかをテストしています。もちろん、あなたがそれを設定するまでは設定されません。 Session_destroy(前回の負荷時)は、実際にサーバー上のディスクからセッションを削除し、セッションCookieを解除します。次回のロードでは、以前のロードでsession_destroyの後にセッション配列に書き込まれた内容に関係なく、新しいセッションを生成しません。 –

答えて