【问题标题】:PHP Cookie still exist after deletedPHP Cookie 删除后依然存在
【发布时间】:2016-12-09 16:38:04
【问题描述】:

我的 cookie 有这个问题:

setcookie('NAME', '', time() - 3600);
 session_unset();
 session_destroy();

Cookie 仍然存在于浏览器中,我可以看到带有 print_r($_COOKIE); 的值 但我无法访问文件内容(这是正确的,因为会话在服务器端被删除)。 但是为什么 cookie 在我关闭浏览器之前仍然可见?

【问题讨论】:

  • 您将cookie设置为过期,因此在下一页加载时它将被浏览器删除。
  • 哪个cookie?如果您想取消设置会话 cookie,请使用 setcookie(session_name(), time() - 3600);(切勿使用文本作为会话名称,除非它作为 session_name() 的参数)
  • 是的,它是会话 cookie,我没有在会话开始时设置它,它会自动出现

标签: php session cookies session-cookies


【解决方案1】:

您将 cookie 设置为过期,因此在下一页加载时它将被浏览器删除。 – cmorrissey

cmorrisey 是正确的。在您的代码示例中,我看到您将到期时间设置为一小时前。如果愿意,您还可以使用 0 让 cookie 在会话结束时过期。

PHP cookie:http://www.w3schools.com/php/func_http_setcookie.asp

到期字段是可选的。指定 cookie 何时过期。值:time()+86400*30,将设置cookie在30天后过期。如果省略此参数或设置为 0,则 cookie 将在会话结束时(浏览器关闭时)过期。默认为 0

session_name()/session.name - http://php.net/manual/en/function.session-name.php

【讨论】:

  • 正如我上面所说的,我根本没有启动这个 cookie。当我开始会话时,他会自动出现。但我不想保留这些数据
  • 会话名称引用会话的名称,该名称用于 cookie 和 URL(例如 PHPSESSID)。它应该只包含字母数字字符;它应该简短且具有描述性(即对于启用了 cookie 警告的用户)。如果指定了名称,则当前会话的名称将更改为其值。
  • string session_name ([ string $name ] ) session_name() 返回当前会话的名称。如果给出 $name,session_name() 将更新会话名称并返回旧的会话名称。
猜你喜欢
  • 2014-12-15
  • 2016-10-06
  • 1970-01-01
  • 2018-01-21
  • 1970-01-01
  • 2010-10-19
  • 1970-01-01
  • 2016-04-07
  • 2012-07-02
相关资源
最近更新 更多