2013-05-03 66 views
0

我在使用Cookie時遇到了一些問題,即PHP。在本地主機上,Cookie似乎不會被刪除,用戶仍然通過WWW.somesite.com登錄,但註銷在SOMESITE.com上運行。在PHP中cookie不會無法在所有域中取消設置

這是與所設置的Cookie打交道的代碼/取消設置:

public static function cookie($name, $value){ 

    $host = apache_request_headers(); 

    $host = $host['Host']; 

    $host = explode('.', $host); 

    $count = count($host); 

    if($count >= 2) { 
     $host = ($host[0] == 'test') ? 'test.' . $host[$count - 2] . "." . $host[$count - 1] : $host[$count - 2] . "." . $host[$count - 1]; 
    } else { 
     $host = $host[0]; 
    } 

    //$host = explode(':', $host); 
    //$host = $host[0]; 

    //Core::prnt($host); 

    if($value === NULL) { 

     setcookie($name, $value, time() - Options::getSetting('U_SESSION_TIMEOUT'), '/', $host); 

     Core::prnt($_COOKIE); 

     return; 

    } 

    setcookie($name, $value, time() + Options::getSetting('U_SESSION_TIMEOUT'), '/', $host); 

} 

任何想法,我做錯了會非常有幫助。

+0

確保您在此函數中''host'具有相同的計算,並且無論您在何處擦除cookie。如果你想在'server.com'和'www.server.com'之間共享cookies,請確保'$ host'以'.'開始,例如。 '.server.com' – 2013-05-03 17:21:48

+0

如果你讓這個答案我會接受它。這似乎是'。'的錯。 – DavidScherer 2013-05-03 18:07:54

回答

0

請確保您在此功能中的$ host具有相同的計算,並且無論您在何處擦除Cookie。

如果你想成爲server.comwww.server.com之間共享餅乾,確保$host開始於.,例如.server.com