如何解决PHP无法读取Cookie?
| 我喜欢使用PHP来查看是否存在cookiePHPSID27258STATUS
和值为COMPLETE
en。
在谷歌浏览器中(在选项中),我可以看到此cookie存在,其值为COMPLETE
。
如果运行此PHP脚本,则会得到\'Not Set \'。我在这里做错了什么?
$cookiename=\"PHPSID27258STATUS\";
if (isset($_COOKIE[$cookiename]) && $_COOKIE[$cookiename] == \"COMPLETE\")
-更新
cookie由开放源代码调查平台“ limesurvey”设置。虽然它可能不是最好的方法。我使用limesurvey在自己正在建设的网站上进行了小型调查(iframe)。我想让调查在下一次访问时消失了,因为它已发布了bin。
Limesurvey从同一主机(现在为localhost)运行。并且在站点的子目录中。
我猜(但是LS中有很多代码),这是在轮询/发布完成后制作Cookie的方式。
$cookiename=\"PHPSID\".returnglobal(\'sid\').\"STATUS\";
setcookie(\"$cookiename\",\"COMPLETE\",time() + 31536000); //Cookie will expire in 365 days
解决方法
您只能读取与阅读脚本属于同一域的cookie。例如,如果cookie PHPSID27258STATUS是由域xyz.com设置的,则无法使用abc.com上的脚本读取它。因此,请确保所需Cookie的域相同。同时向我们显示代码部分,您将在其中设置Cookie。
编辑:
setcookie($cookiename,\"COMPLETE\",(time() + 31536000),\'/\');
, 设置Cookie后,您将无法立即访问它。至少上次是那样。确保您没有此问题。如果不是,则可能是您在设置cookie时遇到了问题,在这种情况下,也请发布该部分。
, 尝试使用以下代码设置Cookie:
setcookie(\"cookiename\",\"cookievalue\",time() + 31536000,\"/\");
这使cookie可以在整个域中使用,我最近遇到了相同的问题,当我尝试这样做时,它就起作用了,原因是,您的浏览器同时存储domain.com和www.domain.com的cookie,所以您永远都不知道您可以从中进行设置,即使您没有此问题,也要设置域。
, 您提到cookie是由在其自己的子目录中运行的程序设置的。您没有提到cookie本身是否设置在该子目录中,但是我怀疑这是您的问题所在。
如果将cookie设置为路径,则该路径内的页面只能访问它。此行为在PHPѭ7page手册页中进行了描述。
当您从子目录内的页面设置cookie时,为了使整个站点都可以访问该cookie,需要使用可选的path
参数设置为ѭ10来调用ѭ7called。
您声明该Cookie由LimeSurvey设置。我不知道这个软件,但是当它设置cookie时,您应该能够查看源代码并查看它是否使用path
参数。如果没有,最好的选择是对其进行修改。然后,整个站点都可以访问该cookie。 (如果LineSurvey开发人员选择不为整个站点设置它,那将是完全可以理解的,因为它可以使软件作为与站点上其他任何事物更隔离的实体运行)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。