【问题标题】:Retrieving cookies doesn't work (localhost with custom domain)检索 cookie 不起作用(带有自定义域的本地主机)
【发布时间】:2012-07-07 20:22:53
【问题描述】:

我正在驱动器上做一个小项目,但我偶然发现了一个小问题。我已经设置了指向我的目录的自定义域并编写了一些脚本来放置 cookie(使用setcookie)。所以我现在的代码(设置 cookie)是:

setcookie('id',$login->id, time()+3600*24);
setcookie('name',$login->name, time()+3600*24);
setcookie('pass',$login->pass, time()+3600*24);

所以基本上 - 没什么大不了的。值取自数据库,插入 cookie 工作正常。他们在那里,固定在我的域上。当我尝试打印它们时出现问题。我尝试使用$_COOKIE['id'] 回显和设置变量,并使用print_r($_COOKIE) 来查看它们。两者都返回空值。我能做什么?

【问题讨论】:

  • 您的浏览器是否配置为拒绝 cookie?另外,我不建议使用 cookie 以任何方式存储密码……
  • 不,不,我在三种不同的浏览器(Chrome、FF 和 Opera)上对其进行了测试,但在这些浏览器中都不起作用。
  • 当您说“插入 cookie 工作正常。它们就在那里,打印到我的域中。”是什么意思?另外,您如何将域指向您的计算机?

标签: php mysql cookies


【解决方案1】:

首先,您必须考虑到 $_COOKIE 中的变量仅在下次页面加载时可用。

其次,尝试为 cookie 指定域。

   setcookie('id',$login->id, time()+3600*24,'/','site.com');
   setcookie('name',$login->name, time()+3600*24,'/','site.com');
   setcookie('pass',$login->pass, time()+3600*24,'/','site.com');

最后,检查函数setcookie() return。

   var_dump( setcookie('id',$login->id, time()+3600*24,'/','site.com') );

【讨论】:

  • 非常感谢,它适用于定义的域。你能告诉我为什么吗?我的意思是,这是我第一次需要定义域(在 localhost 和“网络/自定义域”上工作)。
  • 我不知道为什么会这样,但我以前遇到过这样的问题。然后我还没有时间看,但现在我无法重现它。我认为问题的出现是因为 Web 服务器引入的标头发生了变化。此行为违反 RFC6265。甚至弃用了 RFC2109。
  • 确实很奇怪,但是您的解决方案仍然有效。再次感谢!
猜你喜欢
  • 1970-01-01
  • 2015-06-07
  • 2010-11-11
  • 2018-04-05
相关资源
最近更新 更多