2013-03-07 72 views
0

在logout.php是所有需要將用戶從網站登錄時,在註銷頁面上銷燬它之前啓動會話需要嗎?

session_destroy(); 

還是應

session_start(); 
session_destroy(); 

我很擔心,如果用戶直接導航到該頁面有可能是破壞了會話的錯誤如果還沒有創建。另一方面session_destroy()會破壞上面一行中創建的會話嗎?

+0

你也應該走出註銷用戶時重新生成會話ID的進一步細節。 – kapa 2013-03-07 00:21:49

+0

@bažmegakapa你確定在註銷時會發生這種情況嗎?第一個用戶提供的註釋稱在登錄後調用'session_regenerate_id(true)'。http://php.net/manual/en/function.session-destroy.php – Celeritas 2013-03-07 01:31:41

+0

當用戶的權限更改時,您應該始終重新生成會話ID (登錄或退出都是很好的例子)。 – kapa 2013-03-07 01:33:24

回答

1

您不需要首先調用session_start()... session_destroy()將在服務器上完全刪除一個會話,因此事先調用session_start()可能會導致額外的處理來創建一個會話,只會將其銷燬一行後來。

我會建議看在man page關於清除任何相關聯的Cookie /會話超全局

+0

這個文件在這個問題上有點不清楚;我最好的猜測是,如果你沒有調用'session_start()',不需要'$ _SESSION = array();'但是它也不會傷害。 – 2013-03-07 01:27:14

+0

沒有它我得到錯誤「試圖銷燬未初始化的會話」 – Celeritas 2013-03-19 20:22:53