【问题标题】:cookie getting lost between page navigationcookie 在页面导航之间丢失
【发布时间】:2013-12-10 07:38:31
【问题描述】:

我有一个这样的 cookie:

$_COOKIE['admin'] = 'foo';

现在,我第一次可以看到这个 cookie 使用var_dump($_COOKIE['admin']) 进行序列化所以,我删除了那个 cookie 并只是放置了它。

if(isset($_COOKIE['admin']){
  echo 'hello admin';
}else{
  echo 'hello visitor';
}

通常这应该适用于所有页面,但它只适用于一次。意思是,如果我浏览索引页面,它会起作用,如果我导航到其他页面(同一网站)然后返回索引页面,cookie 就会丢失。并且没有任何东西可以破坏/取消设置任何页面中的任何 cookie/会话。

这可能是什么问题

【问题讨论】:

  • 你能再展示一些你的代码吗?
  • @qwertynl 这些是关于 cookie 的唯一代码。
  • 你有这个工作了吗?

标签: php cookies session-cookies


【解决方案1】:

要使 cookie 在所有页面中起作用,请像这样使用

$value = 'foo';
setcookie('admin', $value, time() + (60 * 60 * 24));

现在,名为 'admin' 且值为 'foo' 的 cookie 将可使用 1 天。路径参数是可选的。但是如果你将它设置为“/”,它将在整个域中可用。

【讨论】:

  • 请选择我的答案:) @THOR
  • 我打算这样做,但它只工作了几秒钟。我不再确定问题是什么。我不认为我的浏览器正在破坏 cookie。
  • 如果您的浏览器没有销毁 cookie,请按照以下方式销毁它 setcookie('admin', '', time() - 3600);在这里,您将名为 admin 的 cookie 设置为空 ('') 并通过将其过期设置为一小时前 (3600) 来删除管理员 cookie,即设置过去的时间。这应该在注销页面中。或者,您可以从浏览器中手动删除 cookie。
  • 他的 cookie 被破坏了,原因我不明白。无论如何,我排除了,因为我不太可能很快得到正确的答案
【解决方案2】:

我认为你应该像这样设置 cookie 值:

setcookie("name","value", $time, "/");

这在 PHP 文档中的 here 中有介绍。

【讨论】:

  • setcookie( "admin", "Nov 25", time() + (10 * 365 * 24 * 60 * 60) );
  • 我用上面的方法设置了cookie。有什么问题吗
  • 您缺少第四个参数,即路径。
  • 我想这是我不明白的。路径到底在哪里?我正在处理根文件夹 (public_html)
  • 在我提供的链接中有解释,请阅读“路径”部分。
猜你喜欢
  • 2014-01-06
  • 1970-01-01
  • 2018-12-03
  • 1970-01-01
  • 2013-12-08
  • 2019-06-14
  • 2019-04-04
  • 2021-03-25
  • 1970-01-01
相关资源
最近更新 更多