【问题标题】:Using cookies with php在 php 中使用 cookie
【发布时间】:2010-07-30 14:25:34
【问题描述】:

我只是想设置和使用一个 cookie,但我似乎无法存储任何东西。

登录时,我使用:

setcookie("username", $user);

但是,当我使用 Firefox 和 Web Developer 插件时 Cookies -> 查看 Cookie 信息 没有用户名 cookie。

此外,当我尝试使用

从后续页面访问值时

$_COOKIE["username"]

它返回 null/empty

var_dump(setcookie("username", $user)); 结果:bool(true)

var_dump($_COOKIE) 结果:特定 cookie 不存在(其他存在)

我做了更多的测试......

cookie 在登录后存在(第一页),但当我转到另一页(第二页)时就消失了,并且永远丢失了......

是否有任何标题必须存在或不存在?

【问题讨论】:

  • 您不会碰巧在登录后更改子域(甚至整个域)吧?

标签: php cookies setcookie


【解决方案1】:

http://php.net/manual/en/function.setcookie.php

尝试将 $expire 参数设置为将来的某个时间点。我相信它默认为 0,这是遥远的过去。

【讨论】:

  • 没有。如果设置为零,则 cookie 在浏览器会话结束时过期。
【解决方案2】:

确保您正确设置域参数,以防登录后转到另一个页面后 URL 发生变化。您可以在http://php.net/manual/en/function.setcookie.php 上阅读有关域参数的更多信息

【讨论】:

  • URL 肯定会发生变化,但域不会。域肯定保持不变!
【解决方案3】:

cookie 可能已过期,因为$expire 默认为自 Unix 纪元以来的 0 秒。 (docs)

试试

setcookie("username", $user, time() + 1200);

设置后 20 分钟到期(基于客户的时间)。

【讨论】:

  • 没有。如果 $expire 设置为零,则 cookie 在浏览器会话结束时过期。
【解决方案4】:

在 setcookie(..) 上使用 var_dump() 来查看返回的内容。也可以对 $_COOKIE 执行相同的操作以查看是否设置了密钥。

【讨论】:

    【解决方案5】:

    感谢大家的反馈... Aditya 带领我进一步分析 cookie,我发现路径是问题...

    登录路径是 /admin/,然后我重定向回根目录...

    感谢大家的帮助和反馈!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-22
      • 2011-04-20
      • 1970-01-01
      • 1970-01-01
      • 2016-06-30
      • 1970-01-01
      相关资源
      最近更新 更多