Php 检查cookie时出现意外行为

Php 检查cookie时出现意外行为,php,Php,我的登录验证脚本- if($pass==$hash) setcookie(“cookiename”,$cookieVal) 这将饼干存储在broswer中。这没有问题;我自己检查过了 然而,在另一个页面中,当我检查cookie是否存在时,它返回false if(isSet($\u COOKIE['cookiename'])回显“COOKIE已设置”; 否则回显“未设置” 上述代码在broswer窗口中打印“未设置” 另外,如果我尝试echo$_COOKIE['cookiename'],输出为错误

我的登录验证脚本-

if($pass==$hash)
setcookie(“cookiename”,$cookieVal)

这将饼干存储在broswer中。这没有问题;我自己检查过了

然而,在另一个页面中,当我检查cookie是否存在时,它返回false

if(isSet($\u COOKIE['cookiename'])回显“COOKIE已设置”;
否则回显“未设置”

上述代码在broswer窗口中打印“未设置”

另外,如果我尝试
echo$_COOKIE['cookiename'],输出为错误注意:未定义索引:cookiename

显然,浏览器(Firefox)无法识别cookie,尽管我可以在查看broswer的选项选项卡时看到它的存在!后来,我也尝试了Chrome和IE——同样的问题

我做错了什么


更新:当我添加
if(isSet($\u COOKIE['cookiename'])时,回显“Set”
在登录验证脚本结束时,检测到我的cookie(“设置”已打印)!但在任何其他页面中都不会检测到它。

默认情况下,cookie仅在指定路径处可用。您应该会在Firebug/Chrome中看到一个
Path
列,该列将显示一个路径。要在整个域(不包括子域)上访问cookie,请使用
setcookie(“cookiename”、$cookieVal、strotime(“+1年)”、“/”)

使用
isset()
调用将不会看到
未定义索引
,因为避免该通知是其目的之一。还有一些问题…cookie可能无法返回的其他原因-域名不同-您没有指定路径,因此请在Firefox中验证cookie的路径。您可以共享这两个有问题的url吗?(正在设置cookie和将其读回的cookie),我怀疑默认路径阻止cookie发送到第二页。请使用
isset
而不是“isset”。@MichaelBerkowski抱歉,我的错误。isset不会抛出任何
未定义索引
错误<代码>echo$_COOKIE['cookiename']可以。相应地修改了问题。是的。它起作用了。谢谢。但是,如果我只想在会话期间设置cookie,那么我的第三个参数(时间)是什么?@gdebojyoti没问题!从setCookie文档中:
如果设置为0或省略,cookie将在会话结束时(当浏览器关闭时)过期。
-我自己也遇到过<代码>设置cookie(“cookiename”,$cookieVal,0,“/”)不过还是谢谢你。:-)现在一切都很好。这就解决了我的饼干问题。