2012-12-17 157 views
0

我遇到未知问题,即我无法使用浏览器取消设置会话。Internet Explorer中的Cookie问题

这里是我的代码,在每次请求检查:

if (isset($_SESSION["logid"])) { 
    $log = TRUE; 
    $logid = $_SESSION["logid"]; 
    $session_id = $_SESSION["sid"]; 
} else { 
    $log = FALSE; 
} 
if (!isset($_COOKIE["cook"])) { 
    if ($log) { 
     unset($_SESSION["logid"]); 
     unset($_SESSION["sid"]); 
     $log = false; 
    } 
    $expire = time() + 60 * 60 * 24 * 30 * 2; 
    $data = array(
     "ip" => $_SERVER['REMOTE_ADDR'], 
     "browser" => $_SERVER['HTTP_USER_AGENT'], 
     "create_time" => $now 
    ); 
    $result = $db->insert("cookies", $data); 
    $cookie_id = $db->lastid; 
    $cookie_id = my_encrypt($cookie_id); 
    setcookie("cook", $cookie_id, $expire, "/"); 
} else { 
    $cookie_id = $_COOKIE["cook"]; 
} 

和代码注销这里

unset($_SESSION["logid"]); 
unset($_SESSION["sid"]); 

我不想取消设置/到期命名的cookie 做饭但我想创建它,如果cookie手动删除或其他原因,所以在第一个块代码做到这一点。

+1

我有一个问题:什么是问题? – DaveRandom

+0

我不会在Internet Explorer中注销 –

+0

@DaveRandom在设置Cookie时是否存在路径问题? –

回答

0

不太确定我明白这个问题,但也许这会有所帮助。所有浏览器实例(窗口或选项卡)共享同一个cookie jar。虽然这在“现实生活”中很少出现问题,但它会对开发人员造成严重破坏,因为作为开发人员,您可能会打开许多​​选项卡。如果您想测试更改cookie的应用程序(如登录或注销),则应关闭浏览器的所有实例并仅打开一个实例,然后进行测试。