【问题标题】:website cookies not being recognized by phpphp 无法识别网站 cookie
【发布时间】:2013-12-31 12:43:47
【问题描述】:

当用户登录我的网站时,我设置了一个 cookie,我也有一个他们的会话 ID,现在唯一的问题是我设置的 cookie 似乎无法访问。虽然我可以访问 PHPSESSID cookie。

用户登录:

$_SESSION['user_is_loggedin'] = 1;
setcookie('usr',  $usr->username, time()+3600*24*7, '/');

访问 cookie:

if(isset($_SESSION['user_is_loggedin']) && $_SESSION['user_is_loggedin'] == 1 ) { 
    echo $_COOKIE['usr'];

错误: Undefined index: usr

我明白为什么不设置 cookie 会出错,但即使设置了 cookie 仍然会出错。

EDIT 似乎在我刷新页面后会话存在,但之后它清除了会话。页面刷新后会话不会继续吗?

【问题讨论】:

  • 您是否手动验证了 cookie 是否存在于您的 Web 控制台中?
  • 是的,我已经验证它存在,我在刷新页面或去其他地方后尝试访问它。页面第一次刷新时它工作正常,但之后它不起作用编辑:经过更多测试,当我在清除 cookie 后第一次刷新页面然后再次登录时,它似乎只有大约 30% 的时间起作用.
  • Cookie 仅在下一个请求时在 $_COOKIE 数组中可用。你知道吗?
  • 关于您的页面刷新,您是否在脚本顶部调用session_start();
  • @Duck 你是一个给予者,干得好。为您的努力+1 的问题

标签: php session cookies


【解决方案1】:

确保您正在调用 session_start(); 并将 cookie 设置在脚本的顶部,否则将发送标头并导致 session_start()setcookie() 失败。

另外,正如@MiloLaMar 指出的那样,如果您打开了 error_reporting,您会发现它失败了:

ini_set('display_errors', 1);
error_reporting(E_ALL);

【讨论】:

  • 当我们在黑暗中拍摄时,您可以在开发过程中随时ini_set('display_errors', true);ini_set('error_level', E_ALL);。只要记住不要让公众看到。
  • 公平点@MiloLaMar,但这不是在黑暗中拍摄。我们在 cmets 中解决了他们的问题
  • 我现在看到了 cmets 的情况。我刚刚对您的回答发表了评论,以在发生其他错误时尝试保存@Duck。
  • 是的,先生,我已将您的评论添加到我的回答中,供路过的任何人使用。谢谢!
猜你喜欢
  • 2018-08-23
  • 1970-01-01
  • 1970-01-01
  • 2021-04-03
  • 2014-07-15
  • 1970-01-01
  • 2011-10-16
  • 1970-01-01
  • 2014-08-08
相关资源
最近更新 更多