2013-02-24 67 views
0

我正在創建一個網站,登錄和註銷,並註冊,但每次我想註銷時出現錯誤如何解決它我認爲eroor是在會話中這個錯誤讓我發瘋我做了很多關於解決問題的搜索,但我沒有得到任何幫助我的解決方案。php mysql +會話登出錯誤

logout.php

<?php 
session_start(); 

session_destroy(); 

if(isset($_COOKIE['id_cookie'])){ 

setcookie("id_cookie", "", time()-50000,"/"); 

setcookie("pass_cookie", "", time()-50000,"/"); 

} 

if(isset($_SESSION['username'])){ 
echo("we could not log out try again!"); 
exit(); 
}else{ 
header("Location: home.php"); 

} 

?> 
+3

嗯,有什麼錯誤? – 2013-02-24 01:08:23

+0

這個例子可能是有用的:http://stackoverflow.com/questions/3512507/proper-way-to-logout-from-a-session-in-php/3512570#3512570 – 2013-02-24 01:09:31

回答

0

不知道你的錯誤,但是閱讀session_destroy會幫助你。

檢查時if(isset($_SESSION['username'])){,如,根據手冊我的猜測是錯誤是:

session_destroy(),刪除所有與當前會話相關聯的數據。它不會取消設置與會話關聯的任何全局變量,也不會取消設置會話Cookie。 要再次使用會話變量,必須調用session_start()。

您從不再次啓動會話,因此您無法使用會話變量。

此外,對於出登錄用戶,在同一頁面下,有利於進一步援助:

爲了完全終止會話,想註銷用戶,會話ID也必須未設置。如果使用cookie傳播會話標識(默認行爲),則必須刪除會話cookie。 setcookie()可用於此目的。

雖然它不在問題的範圍之內 - 它將幫助您製作成功的註銷腳本。

+0

先生,我需要從你的另一個幫助,如果它是可能的,我有一個profile.php代碼錯誤[http://stackoverflow.com/questions/15046785/user-profile-data-does-not-appear-after-logging-in]你可以看看,也許幫助我解決了這個問題 – 2013-02-24 01:21:53

+0

@ user2097286我會對它進行掠奪。這個答案能幫助你嗎? – Jon 2013-02-24 01:23:09

+0

有點因爲我是新來的PHP,我不知道有關會議和餅乾,所以我試圖學習它,並得到幫助ANW謝謝你的回覆和你的幫助 – 2013-02-24 01:26:15

0

session_destroy();破壞所有的會話,所以我沒有遵循你的If語句來檢查用戶名會話點?

其次,你實際上並不需要括號內爲迴音:

echo("we could not log out try again!"); exit(); 

可以寫爲:

echo "we could not log out try again!"; exit; 
+0

你的意思是我不需要如果統計,因爲從這個回聲如果出現,不讓我註銷,讓我瘋狂 – 2013-02-24 01:29:25

+1

你不需要'if(isset($ _ SESSION ['username'])){'你破壞了會話,它不會被設置,因此它是一個浪費去檢查。 – Sir 2013-02-24 01:32:15

0
<?php 
session_start(); 
session_destroy(); 
if(isset($_COOKIE['id_cookie'])){ 
    setcookie("id_cookie", "", time()-50000,"/"); 
    setcookie("pass_cookie", "", time()-50000,"/"); 
} 

header("Location: home.php"); 
exit(); 
?>