【问题标题】:The cookie value not removed in php未在 php 中删除的 cookie 值
【发布时间】:2015-07-19 13:28:54
【问题描述】:

我是 php 新手,但我有 2 年的 asp.net 经验。当我调用 logout.php 时,它并没有删除 cookie 值。

<?php

if (isset($_COOKIE['C_username'])) {

  unset($_COOKIE["C_username"]);
  unset($_COOKIE["C_password"]);


  setcookie("C_username", '', time() - 3600);
  setcookie("C_password", '', time() - 3600);

}

echo "<script>alert('".$_COOKIE["C_username"]."');</script>" ; //Here the cookie value is found.

header( 'Location: ../index.php');
?>

重定向到另一个 index.php 后,也找到了 cookie。

【问题讨论】:

标签: php cookies


【解决方案1】:

在页面被浏览器重新加载之前,cookie 不会被清除,因此如果您将 javascript 更改为实际在浏览器上查找 cookie,而不是使用它的 PHP(在服务器上)版本你可能会得到更可预测的结果。

还请记住,cookie 和 header() 语句必须在任何其他数据发送到浏览器之前运行,因此您的代码无论如何都会生成错误,因为您的 header() 语句位于 echo 语句之后。

所以试试

<?php

if (isset($_COOKIE['C_username'])) {
  setcookie("C_username", '', time() - 3600);
  setcookie("C_password", '', time() - 3600);
  header( 'Location: ../index.php');
  exit;
}

echo '<script>alert(document.cookie);</script>";    

?>

附加点:

不要在cookies中输入密码 无论如何都不需要这样做,就像您在用户重新访问时使用它来登录一样,您不需要密码,您只是设置了事实因为您看到一个 cookie 而登录,它不需要在那个/那些 cookie 中有一个有效的用户 ID/密码。

还请记住,浏览器可以关闭 cookie!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    • 2010-12-18
    • 1970-01-01
    • 2011-08-06
    • 2011-07-27
    • 2016-06-17
    • 1970-01-01
    相关资源
    最近更新 更多