我遇到了未知的问题,即我无法取消与浏览器的会话。
以下是我的代码,用于检查每个请求:
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或其他原因时创建它,以便第一个块中的代码执行此操作。
答案 0 :(得分:0)
我不太确定我理解这个问题,但也许这会有所帮助。所有浏览器实例(窗口或选项卡)共享相同的cookie jar。虽然这在“现实生活”中很少成为问题,但它会对开发人员造成严重破坏,因为作为开发人员,您可能会打开许多标签。如果要测试更改cookie的应用程序(例如登录或注销),则应关闭浏览器的所有实例并仅打开一个实例,然后进行测试。