首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在PHP中取消设置cookie?

如何在PHP中取消设置cookie?
EN

Stack Overflow用户
提问于 2012-05-10 10:58:03
回答 5查看 73.3K关注 0票数 22

我得弄清楚怎么解开这个曲奇。到目前为止,我尝试的所有东西都失败了。

这就是我目前取消设置它的方式,它似乎不起作用。

代码语言:javascript
复制
setcookie("user_id", $user_id, time() - 7200);

我是这样设置的:

代码语言:javascript
复制
setcookie("user_id", $user_id, time() + 7200);

我有一个名为set_session_from_cookie()的函数,它检查是否设置了cookie,如果设置了cookie,它将使用cookie启动一个新会话。

问题是,当我在我的页面上使用它时,我无法注销。我认为这是因为我无法取消设置会话。

我使用此函数的原因是,如果用户想要在结束会话后被记住,他们可以通过调用cookie重新启动会话。

代码语言:javascript
复制
function set_session_from_cookie()
{
    if (isset($_SESSION['user_id'])) {
        echo '';
    } else {
        $_SESSION['user_id']=$_COOKIE['user_id'];
    }
}

注销:

代码语言:javascript
复制
<?php
require'core.php';
session_destroy();

setcookie("user_id", "", time() - 7200);
header('Location:/social_learning/site_pages/starter-template.php');

我用以下代码设置了我的cookie:

代码语言:javascript
复制
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重新启动会话?因为该功能似乎正在导致用户不再能够登出。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-05-10 13:05:52

这个问题的解决方案是,我需要设置正确的路径来取消设置cookie,因为我是从最初设置它的不同文件中取消设置它。

通过在浏览器cookie中查找cookie,我找到了需要用于未设置的路径,一旦在浏览器中找到cookie,该路径就列在cookie旁边。因此,我将cookie的路径设置如下:

代码语言:javascript
复制
setcookie("user_id", $user_id, time() - 1, "/social_learning/site_pages");

最后一个参数是path。而且它起作用了。

我的原始setcookie如下所示:

代码语言:javascript
复制
setcookie("user_id", $user_id, time() + 7200, "");
票数 13
EN

Stack Overflow用户

发布于 2012-05-10 11:06:36

将cookie的过期日期设置为过去的某个时间(例如,在epoch之后一秒)。

setcookie("yourCookie", "yourValue", 1);

这将导致cookie过期。

使用1而不是0,因为0将cookie设置为在会话结束时过期。

票数 34
EN

Stack Overflow用户

发布于 2012-05-10 11:09:57

关于你的代码几乎没有什么安全问题,但是要回答你的问题,在php中取消设置cookie,你所需要做的就是将过期时间设置为过去的某个时间:

代码语言:javascript
复制
setcookie("user_id", "", time()-10, "/");

"loginform.php“不是有效的域,这可能是问题所在。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10526967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档