2013-06-22 39 views
1

是否安全地銷燬和取消這樣的會話? 它是否遵循編碼標準?安全是否安全銷燬和取消這樣的會話在php

我正在爲網站實施註銷腳本。用戶登錄後,併成功地設置會話 session_name("website_sess") session_start();

這是腳本,當用戶點擊註銷按鈕

if ((isset($_SESSION['firstsessionname'])) 
    && (!empty($_SESSION['firstsessionname']))) { 
     $_SESSION['firstsessionname'] = ''; 
} 

if ((isset($_SESSION['secondsessionname'])) 
    && (!empty($_SESSION['secondsessionname']))){ 
     $_SESSION['secondsessionname'] = ''; 
} 

if ((isset($_SESSION['thirdsessionname'])) 
    && (!empty($_SESSION['thirdsessionname']))){ 
     $_SESSION['thirdsessionname'] = ''; 
} 

if ((isset($_SESSION['fourthsessionname'])) 
    && (!empty($_SESSION['fourthsessionname']))){ 
     $_SESSION['fourthsessionname'] = ''; 
} 


session_name("website_sess"); 
session_start(); 

session_unset(); 
$_SESSION[]=array(); 
session_destroy(); 
session_regenerate_id(TRUE); 

被稱爲是安全的安全,並應session_regenerate_id(真)在那裏?在破壞所有會議之後。

+5

這絕對是過度的 – KyleK

+0

凱爾,你說這是好還是壞?我擔心,我不確定在它被銷燬後我是否應該重新生成它,因爲我仍然會在另一個頁面上重新開始會話。 –

+1

如果您將''__SESSION'''設置爲空數組,則不需要任何這些if語句。一旦你銷燬了會話,就是這樣 - 當你在下一頁開始新會話時,我希望它會自動擁有不同的ID,因此你不需要重新生成。 另一件值得注意的事情是:你的'''$ _SESSION [] = array();'''行只是添加一個新的鍵。你可能打算輸入'''$ _SESSION = array();'''來代替(注意缺少方括號)。 –

回答

0

正如@KyleK所說,這遠遠超出您的需求。看看session_regenerate_id docs的參數部分。

<?php 
// Generate a new session ID and delete the old data while we're at it 
session_regenerate_id(true);