2011-11-06 168 views
0

不會被刪除我設置cookie刪除當用戶按下注銷鏈接:餅乾在PHP

if(isset($_GET['logout'])) 
    { 
     setCookie("user",'',time()-(60*60*24*365*5)); 
       echo "deleted cookie"; 
    } 

當我點擊退出,我得到了寫刪除的cookie,..當我再次啓動瀏覽器,我的登錄屏幕出現,甚至認爲它不應該導致cookie被刪除..爲什麼會發生?

編輯:原setcookie()電話:

setCookie("user",$password_hash,time()+60*60*24*365*5,"/"); 

我甚至做到這一點:

setCookie("user",'',time()-(60*60*24*365*5)); 
       echo "deleted cookie"; 
       echo $_COOKIE["user"]; 

該Cookie仍然會打印

+1

首先顯示您用來設置Cookie的代碼。如果您指定了路徑和域,則路徑和域必須完全匹配。在調用'setcookie()'來刪除它之前,請確保你沒有產生任何輸出 –

+0

setCookie(「user」,$ password_hash,time()+ 60 * 60 * 24 * 365 * 5,「/」); – WithFlyingColors

+0

當你的腳本被請求時,'$ _COOKIE'總是包含cookie的值。使用'setcookie()'刪除一個cookie不會取消設置'$ _COOKIE'變量。這完全沒問題。在下一個請求你會看到。請參閱http://tools.ietf.org/html/rfc6265和http://php.net/manual/en/function.setcookie.php – hakre

回答

3

既然你在原來的setcookie()調用指定的路徑爲"/",發送相同的路徑語句在未設置來電:

if(isset($_GET['logout'])) 
{ 
    // Delete cookie from browser 
    setCookie("user",'',time()-(60*60*24*365*5), "/"); 

    // Unset the cookie value in context of the running script 
    unset($_COOKIE['user']); 

    echo "deleted cookie"; 
} 
+0

你的代碼,似乎工作..和ekrembk..unset方法工作..我讀/是沒有必要的..我猜的作者PHP的食譜是錯誤的 – WithFlyingColors

0

使用:

unset($_SESSION); 
unset($_COOKIE); 
012 。

,並且使得用戶重新登錄,應該讓它

+1

刪除文件系統然後重新啓動服務器使用戶需要登錄再回來一次。這真的不是一個有用的答案,它與在瀏覽器中刪除cookie無關。 – hakre

+0

-1這不起作用。 '$ _COOKIE'超全局是有效的只讀。 http://php.net/manual/en/features.cookies.php – Shad