2013-07-20 70 views
1

我已經嘗試了幾種方法來清除我的Cookie,位於localhost。無論我做什麼,我都無法在Chrome和Firefox中以正常模式將其刪除,但在Chrome的隱身模式和Firefox的隱私瀏覽模式下工作正常。無法清除cookie我使用PHP所做的任何操作

這裏是我的代碼:

$name = 'keepsignin'; 

if (isset($_SERVER['HTTP_COOKIE'])){ 
    $cookies = explode(';', $_SERVER['HTTP_COOKIE']); 
    foreach ($cookies as $cookie_id => $cookie_value){ 
     if($cookie_id === $name){ 
      self::set_cookie($cookie_id, $value, $expiry, $path, $domain); 
     } 
    } 
} 

清除cookie的手動東西做工精細之後,但我不能夠刪除已經存在的餅乾。

+0

'explode'返回一個數字數組,而不是一個關聯數組,所以'$ cookie_id'將是一個數字,而不是cookie的名字。 – Barmar

+0

是否有一種方法可以將爆炸返回作爲具有名稱的關聯數組來獲取? –

+0

感謝您的快速回復 –

回答

1
$_SERVER['HTTP_COOKIE']

是分號形式分隔的鍵 - 值對的列表:

key1=value1;key2=value2;key3=value3;... 

拆分在字符串;,但不是=

我想你可能會尋找類似:

$name = 'keepsignin'; 

if (isset($_SERVER['HTTP_COOKIE'])) { 
    $cookies = explode(';', $_SERVER['HTTP_COOKIE']); 
    foreach ($cookies as $cookie) { 
     list($cookie_id, $cookie_value) = explode('=', $cookie); 
     if($cookie_id === $name){ 
      self::set_cookie($cookie_id, $value, $expiry, $path, $domain); 
     } 
    } 
} 

注意使用list()在一個操作分配$cookie_id$cookie_value

+0

非常感謝 –

0

我建議迭代$_COOKIE超全球而不是自己解析$_SERVER['HTTP_COOKIE']