2011-10-20 172 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