将cookie路径设置为“/”并不意味着整个网站都可以访问该cookie。

16
为什么把PHP cookie的路径设置为“/”后,不会在该域名下的所有子目录中起作用,而只在当前目录中起作用。
cookie 的设置如下:
setcookie("name", "val", expire_time, "/");

它就是不想工作。


这个问题老得不能再老了,但是你可能在子目录中设置了一个重复的 cookie。在当前路径下设置的 cookie 会覆盖在基础路径上设置的同名 cookie。 - Milo LaMar
4个回答

29

尝试包含域参数:

setcookie("name", "val", expire_time, "/", ".domain.com");
// don't forget the prefixing period: .domain.com

这将使 "domain.com" 的所有子域名都能使用。


3
问题并没有询问子域名,而是子目录。 - Crescent Fresh

24

您是否在本地测试?如果是这种情况,您需要将$domain的值传递为null。


8
谢谢,这帮助我解决了本地安装的问题。 - onjegolders

8
将cookie路径设置为/应该使其在整个域中可用。如果您将cookie设置为这样,并且它没有被发送,那么就有其他问题。
尝试在Firefox中使用Web Developer插件。它会显示可用cookie的详细信息。也许这可以帮助您诊断问题。

3

虽然我有点晚了,但我才发现我的问题非常愚蠢,但为了完整起见,我还是想发布它:

我忽略了在cookie的到期时间上添加time(),因此它会立即过期。

到期时间应该是time() + 秒数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接