2011-05-31 130 views
7

我在PHP中設置cookie通過這個呼叫無法刪除PHP設置cookie的

setcookie('alert_msg', 'you have the add badge'); 

我曾嘗試取消設置這種方式

setcookie('alert_msg', ''); 
setcookie('alert_msg', false); 
setcookie('alert_msg', false, 1); 
setcookie('alert_msg', false, time()-3600); 
setcookie('alert_msg', '', 1, '/'); 

,它仍然不會取消設置$ _COOKIE ['alert_msg']中的cookie值。

我已經在Firefox和Chrome嘗試

代碼示例:

if (isset($_COOKIE['alert_msg'])) { 
    $this->set('alert_msg', $_COOKIE['alert_msg']); 
    unset($_COOKIE['alert_msg']); 
    setcookie('alert_msg', '', 1, '/'); 
} 
+3

檢出cookie路徑。你是否在'dir/file'中設置cookie並試圖在'dir2/file'中取消設置? – 2011-05-31 11:53:44

+0

@Shakti - 我正在使用Cakephp。我將它設置在一個位於/ app/controllers的控制器中,並試圖在位於/ app中的app_controller中解除它,這是否有所作爲? – going 2011-05-31 11:58:20

+0

@Shakti - 我看你是對的,你可以請你添加你的評論作爲答案,我可以將其標記爲我接受的答案。 – going 2011-05-31 12:00:25

回答

21

結帳的Cookie路徑。

由於您沒有將path參數傳遞給setcookie函數,因此在這種情況下,cookie將僅設置爲當前目錄並且可以使用,並且只能從該目錄中取消設置。

可能的解決方案是將path的值作爲/。所以這個cookie可以被應用程序的任何部分使用和取消設置。

+0

完美地工作 – spyke01 2014-01-31 20:21:52

+0

坦克。你節省了我的時間 – IndieBoy 2015-11-05 06:17:19