2011-10-20 15 views
2

Webアプリケーション用のログアウトファイルがあります。私はログアウト後にセッションを作成して、ログアウト成功メッセージをエコーできるようにしたいと思います。私のログアウトコードは機能しますが、前のセッションを破棄して新しいセッションを作成することはできません。破棄後にセッションを開始するPHP

コードを参照、これを行うための最善の方法は何ですか:

//LOGOUT.PHP 
session_start(); 

//// unset all $_SESSION variables 
session_regenerate_id(); 
session_unset(); 
session_destroy(); 

$_SESSION['logoutsuccess'] = 'You have successfully logged out.'; 
header("Location: /login/"); 
exit; 


//LOGIN.PHP (ECHO SUCCESS MESSAGE) 

if(isset($_SESSION['logoutsuccess'])) 
{ 
echo '<div class="success">'.$_SESSION['logoutsuccess'].'</div>'; 
unset($_SESSION['logoutsuccess']); 
} 

を私は、可能な場合は、URLに変数を渡す避けたいです。

+2

がありますリダイレクトを実行する正当な理由は何ですか?なぜあなたはログアウトページに成功のステータスを表示できませんか? –

答えて

3

代わりにセッション変数として保存しようとしているの、あなたはリファラをチェックして、/ログアウトを確認することができ/

if(strpos($_SERVER['HTTP_REFERER'], 'logout') !== false) { 
    echo 'You have successfully logged out.'; 
} 
10

session_destroy()の後にsession_start()を再度呼び出しますか?

+1

これはあなたの特定の質問のための最良のアプローチですが、なぜあなたは単にLOGOUT.PHPページにメッセージを表示しないのか分かりません。 –

+0

@WatermarkStudios私は同じことをやっている..彼は可能性がリフレッシュ時にフォームの再送信を避けるためにリダイレクトを行っている... http://stackoverflow.com/questions/6320113/how-to-prevent-form-resubmission-when- page-is-refresh-via-php – Sarah

5

ただ、新しいセッションを開始:

session_start(); 
session_destroy(); 
session_start(); 
$_SESSION['food'] = 'pizza'; 
0
session_id($session_id_to_destroy); 
session_start(); 
session_destroy(); 
session_commit(); 
+8

あなたの答えを説明してください、それが何で、なぜ、どのように...何か、また、OPは2011年です – gmo

関連する問題