PHP无法读取cookie?

时间:2011-06-12 12:28:14

标签: php cookies

我喜欢使用PHP来查看Cookie PHPSID27258STATUS是否与COMPLETE en一起出现,如果有的话。

在谷歌浏览器中(在选项中)我可以看到此cookie存在且值为COMPLETE

如果我运行这个PHP脚本,我会得到'Not Set'。我在这里做错了什么?

$cookiename="PHPSID27258STATUS";
if (isset($_COOKIE[$cookiename]) && $_COOKIE[$cookiename] == "COMPLETE")

- 更新
cookie由开源调查平台“limesurvey”设置。虽然它可能不是最好的方法。我使用limesurvey在我正在建造的网站上进行一项小调查(iframe)。我想让调查在下次访问时消失。 Limesurvey从同一主机运行(现在是localhost)。并且位于网站的子目录中。

我猜(但LS中有很多代码)这就是在民意调查/帖子完成后如何制作cookie。

$cookiename="PHPSID".returnglobal('sid')."STATUS";
setcookie("$cookiename", "COMPLETE", time() + 31536000); //Cookie will expire in 365 days

4 个答案:

答案 0 :(得分:2)

您只能读取与阅读脚本属于同一域的Cookie。例如,如果域名xyz.com设置了Cookie PHPSID27258STATUS,则无法使用abc.com上的脚本读取它。因此,请确保所需Cookie的域名是相同的。同时向我们展示您设置cookie的代码部分。

编辑:

setcookie($cookiename, "COMPLETE", (time() + 31536000) , '/');

答案 1 :(得分:1)

设置后,您无法立即访问Cookie。至少上次是这样的。确保您没有此问题。如果不是,则可能是您在设置cookie时遇到问题,在这种情况下,请同时发布该部分。

答案 2 :(得分:1)

尝试使用以下代码设置Cookie:

setcookie("cookiename", "cookievalue", time() + 31536000, "/");

这使得cookie可用于整个域,我最近遇到了同样的问题,当我尝试这个时,它使它工作,原因是,你的浏览器存储domain.com和www.domain.com的cookie所以你永远不知道你的设置和来自哪个,即使你没有这个问题,最好设置域名。

答案 3 :(得分:0)

您提到cookie是由在其自己的子目录中运行的程序设置的。你没有提到cookie本身是否设置在该子目录中,但我怀疑这是你的问题所在。

如果将cookie设置为路径,则只能访问该路径中的页面。 PHP setcookie() manual page

中描述了此行为

当您从子目录中的页面设置cookie时,为了使整个站点可以访问cookie,需要使用可选的setcookie()参数调用path设为"/"

您声明Cookie正由LimeSurvey设置。我不知道这个软件,但您应该能够查看源代码,看看它是否在设置cookie时使用path参数。如果没有,你最好的选择就是修改它。然后整个网站都可以访问cookie。 (如果LineSurvey开发人员选择不为整个站点设置它,那将是完全可以理解的,因为它允许软件作为一个更加孤立的实体从网站上的任何其他实体运行。)