在PHP中cookie不会无法在所有域中取消设置

问题描述:

我在使用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

请确保您在此功能中的$ host具有相同的计算,并且无论您在何处擦除Cookie。

如果你想成为server.comwww.server.com之间共享饼干,确保$host开始于.,例如.server.com