2012-09-05 106 views
0

所以我有一個註銷按鈕,鏈接到一個名爲logout.php的腳本,標準的東西。是否session_destroy();仍然工作?

Logout.php在一分鐘是這樣的:

<?php 
session_start(); 
$sid = session_id(); 
echo $sid; 

session_destroy(); 
session_unset(); 

session_start(); 
session_regenerate_id(true); 
$sid = session_id(); 
echo $sid; 
?> 

這個代碼在互聯網上做一些研究(和堆棧溢出),並使用簡單的後未來:

session_start(); 
session_destroy(); 

Didnt工作。

所以當前的腳本會產生這樣的:

a920o3mmfhh7gldak4ki4nure5 
Warning: session_destroy() [function.session-destroy]: Session object destruction failed in (File Path)p on line 7 

Warning: session_regenerate_id() [function.session-regenerate-id]: Session object destruction failed in (File Path) on line 12 
a920o3mmfhh7gldak4ki4nure5 

已session_destroy已經貶值?因爲我看了手冊,並沒有說它已經過了,而且通常是最新的。如果沒有,任何人都可以看到它爲什麼不能破壞我的會話?

+0

這是奇數,你用什麼PHP版本,什麼操作系統? –

+0

服務器上安裝了PHP 5.2.6。 – Bohdi

+1

我收到這樣的錯誤,工作100%罰款,但在Ubuntu上使用PHP 5.3.16 –

回答

1

使用此註銷:

session_start(); 
$_SESSION = array(); 

if (ini_get("session.use_cookies")) { 
$params = session_get_cookie_params(); 
setcookie(session_name(), '', time() - 42000, 
$params["path"], $params["domain"], 
$params["secure"], $params["httponly"] 
); 
} 
+0

這是不行的,它只是給我的另一個錯誤:a920o3mmfhh7gldak4ki4nusg1 警告:session_regenerate_id()[function.session-再生-ID]:Session對象銷燬(文件路徑),第7行 a920o3mmfhh7gldak4ki4nusg1 – Bohdi

+0

失敗你檢查你的會話php.ini中的.save_path並檢查是否具有正確的權限? – Nin

+0

我的服務器是由第三方公司運行的,我把它放在php.ini中? – Bohdi

0
if(isset($_SESSION)){ 
    unset($_SESSION); 
} 
+0

即使沒有錯誤,但不會破壞會話,用戶仍然登錄 – Bohdi

+1

如果全局'$ _SESSION'被破壞..你怎麼能告訴用戶仍然登錄? – nick

+0

我可能是愚蠢的,但因爲我執行該腳本,如果會話被破壞,然後當我嘗試指向index.php我應該重定向到login.php,因爲它在我登錄之前工作。但它允許我自由漫遊網站,而無需重定向。再次抱歉,如果我錯過了什麼。 – Bohdi