0

我的登录验证脚本 -

if($pass == $hash) setcookie("cookiename",$cookieVal);

这会将 cookie 存储在浏览器中。这没有问题;我自己检查过。

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

if(isSet($_COOKIE['cookiename'])) echo "Cookie is set"; else echo "Not set";

上面的代码在浏览器窗口中打印“未设置”。

另外,如果我尝试echo $_COOKIE['cookiename'];,输出是错误通知:未定义索引:cookiename

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

我究竟做错了什么?

更新:当我添加if(isSet($_COOKIE['cookiename'])) echo "Set";到登录验证脚本的末尾时,检测到我的 cookie(打印了“Set”)!但在任何其他页面中都没有检测到它。

4

1 回答 1

1

默认情况下,cookie 仅在指定它们的路径中可用。您应该Path会在 Firebug/Chrome 中看到一列,它会显示一条路径。要使 cookie 在您的整个域(不包括子域)上可访问,请使用setcookie("cookiename", $cookieVal, strtotime('+1 year), '/');

于 2013-07-02T15:44:21.060 回答