【发布时间】:2012-05-18 14:39:00
【问题描述】:
我需要弄清楚如何取消设置这个 cookie。到目前为止我尝试的一切都失败了。
这是我目前取消设置的方式,但它似乎不起作用。
setcookie("user_id", $user_id, time() - 7200);
我是这样设置的:
setcookie("user_id", $user_id, time() + 7200);
我有一个名为 set_session_from_cookie() 的函数,它检查是否设置了 cookie,如果设置了,它将使用 cookie 启动一个新会话。
问题是当我在我的页面上使用它时,我无法注销。我认为这是因为我无法取消设置会话。
我有这个功能的原因是如果用户想在他们结束会话后被记住,他们可以通过调用 cookie 重新启动会话。
function set_session_from_cookie()
{
if (isset($_SESSION['user_id'])) {
echo '';
} else {
$_SESSION['user_id']=$_COOKIE['user_id'];
}
}
退出:
<?php
require'core.php';
session_destroy();
setcookie("user_id", "", time() - 7200);
header('Location:/social_learning/site_pages/starter-template.php');
我使用以下代码设置我的 cookie:
if ($rememberme == "on") {
$user_id = mysql_result($query_run, 0, 'id');
setcookie("user_id", $user_id, time() + 7200);
$_SESSION['user_id'] = $user_id;
redirect('home_page.php');
} else {
if ($rememberme == "") {
echo 'ok';
$user_id = mysql_result($query_run, 0, 'id');
echo $user_id;
$_SESSION['user_id'] = $user_id;
redirect('home_page.php');
}
}
如何在不使用我创建的功能的情况下使用保存的 cookie 重新启动会话?由于该功能似乎导致用户无法再注销。
【问题讨论】:
-
您的 cookie 是否应该是站点范围的?
-
应该是吗?我怎么知道?
-
不要使用相对时间来取消设置 cookie。这使得取消设置取决于您用户的时钟是否准确。使用
1的时间,除了那些认为现在是 1970 年的时钟真的坏了的人之外,这将抓住所有人。 -
如何将其设置为时间 1?
-
这不安全。 Cookie 可以轻松编辑,在这种情况下,有人可以通过编辑 cookie 以任何用户身份登录。您应该对 cookie 使用某种加密。
标签: php session cookies session-cookies