如何在PHP中取消设置cookie?

2022-08-30 18:49:02

我需要弄清楚如何取消设置此cookie。到目前为止,我尝试的所有内容都失败了。

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

setcookie("user_id", $user_id, time() - 7200);

这是我如何设置它:

setcookie("user_id", $user_id, time() + 7200);

我有一个调用的函数,用于检查是否设置了cookie,如果设置了,它将使用cookie启动新会话。set_session_from_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重新启动会话?由于该函数似乎导致用户不再能够注销。


答案 1

将 Cookie 的到期日期设置为过去的某个时间(例如,纪元后一秒)。

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

这将导致 Cookie 过期。

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


答案 2

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

通过在浏览器 Cookie 中查找 Cookie,我找到了需要用于未设置的路径,一旦我在浏览器中找到该 Cookie,该路径就会在 Cookie 附近列出。因此,我随后设置了 cookie 的路径,如下所示:

setcookie("user_id", $user_id, time() - 1, "/social_learning/site_pages");

最后一个参数是路径。它奏效了。

我的原始版本如下所示:setcookie

setcookie("user_id", $user_id, time() + 7200, "");

推荐