2010-12-16 52 views
2

爲什麼我不能刪除這個Cookie?PHP - Cookie無法使用?

當用戶登錄authenticate_user()運行時。當用戶註銷logout()時運行。當類運行時,通過update_status()生成狀態。

我該如何殺死狀態cookie?無論我嘗試它是否存在,用戶都無法註銷。

[已刪除代碼]

解決了它。

刪除cookie時,您必須指定cookie可以訪問的目錄。

Not Deleted 
setcookie("status", "", (time()+3600), '/'); 
setcookie("status", "", (time()-3600)); 

Deleted 
setcookie("status", "", (time()+3600), '/'); 
setcookie("status", "", (time()-3600), '/'); 
+0

這不會直接回答你的問題,所以我不會把它作爲答案,但是你爲什麼還要通過使用cookie *來使你的生活變得困難*,而不是僅僅在會話中做所有事情?你做事情的方式看起來更加複雜,我看不出這一點。如果你把它全部留在會話中,那麼你可以只用'session_destroy',它們就完成了。 – 2010-12-16 11:27:48

+0

我似乎已經在同一時間回答你的想法:) – 2010-12-16 11:32:14

回答

1

狀態是會話cookie嗎?如果是,那麼$_COOKIE['status']將不存在。 (這可能是爲什麼你的會議有問題,不能正常工作)。請確保你的頁面頂部有第一個session_start()(這可能是你爲什麼會遇到問題)。

0

試試這個...

setcookie("status", "", time()-3600, ""); 
0

這是一個有點灰色地帶。

首先需要注意的是,您正在嘗試通過將cvookie設置爲一小時前將其刪除 - 但您的腳本在哪個時區運行?客戶端在什麼時區?

此外,我已經看到行爲,似乎是由於瀏覽器掛到cookie,當到期時間隨後設置爲過去的日期(過去 - 不是時區的事情)。

僅存在一個cookie不應該被視爲身份驗證的證據 - 這應該是一個數據存儲在服務器端的句柄。因此,解決方案是將Cookie的VALUE值覆蓋爲無意義值 - 而不是更改其到期時間。