0

我遇到了未知问题,即我无法取消与浏览器的会话。

这是我检查每个请求的代码:

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"]);

我不想取消设置/过期名为Cook的 cookie ,但如果手动删除 cookie 或其他原因,我想创建它,所以第一个块中的代码会这样做。

4

1 回答 1

0

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

于 2012-12-17T16:32:36.907 回答