2013-05-26 67 views
4

這是一個代碼,我銷燬會話,但它仍然工作。

<?php 
session_start(); 

$_SESSION['name'] = 'Arfan'; 

$_SESSION['second_name'] = 'Haider'; 

echo 'My full name is '.$_SESSION['name'].$_SESSION['second_name'].'<br/>'; 

unset($_SESSION['second_name']);// unset the second_name session 

echo 'My name is '.$_SESSION['name'].$_SESSION['second_name'].'<br/>';// work fine error popup 

session_destroy();// Destroy all the session 

echo $_SESSION['name']; // session is working here. 
?> 

正如你可以看到在代碼會議結束時也工作爲什麼?

回答

0

使用session_destroy()後,會話cookie被刪除,會話不再存儲在服務器上。 $_SESSION中的值可能仍然可用,但它們不會在下一頁加載。

如果你想徹底清除會話,你可以使用:

session_start(); 
session_destroy(); 
$_SESSION = array(); 
+0

根據[該文檔(http://no1.php.net/session_destroy)不是這種情況。這個cookie沒有被觸及,'$ _SESSION' *中的變量應該不可用,或者至少這是我從中收集到的:「要再次使用會話變量,必須調用'session_start()'。」 – Hubro

+0

@Codemonkey這正是這種情況:檢查http://stackoverflow.com/a/14571041/1068495。 – Silox

+0

這是不工作的傢伙閱讀文檔以及工程:http://pk1.php.net/session_destroy –

4

docs

爲了完全終止會話,想註銷用戶時, 會話ID也必須取消設置。如果使用cookie傳播會話ID(默認行爲),那麼會話cookie必須被刪除,其中 。 setcookie()可用於此目的。

Example

session_start(); 
session_unset(); 
session_destroy(); 
session_write_close(); 
setcookie(session_name(),'',0,'/'); 
session_regenerate_id(true); 
+0

同樣的答案是我的太好了!和工作!基本上會話在cookie中保存了數組的列表,所以這就是他們需要銷燬所有這些數據以及閱讀文檔的原因。其好的 –

+0

'+ 1'好的! :) –