在php中找不到已设置的cookie


A set cookie is not found with php

我已经成功设置了一个cookie cad,并且可以在firefox cookie-search中看到它。

if(isset($_COOKIE['cad'])){
echo'YES';
}else{
echo'NO';
}
//parse NO

我正在一个托管服务器上设置我的网站,即将从另一个服务器更改,所以服务器是site.com.test.host.com。调用cookie会产生问题吗?

但与此相反的是,print_r($_COOKIE);显示了同一测试域中的其他cookie

设置cookie时,可以设置各种选项。众所周知,cookie只能由同一域中的脚本访问,但是您也可以影响cookie所设置的路径。例如,/foo/bar.php上的cookie设置可能无法在/foobar.php上访问。

PHP默认将cookie设置为当前路径。因此,在上面的示例中,cookie被设置为路径/foo/,并且不能在该路径之外访问。

因此,当您设置cookie时,最好明确说明您希望它们在哪里可用。在PHP中,这很容易;只需设置一个指定路径的额外参数。正如你在评论中指出的,你需要最自由的路径/,这意味着"在这个域中的任何地方"。

setcookie('cad', 'somevalue', 0, '/');

参见PHP手册中的setcookie文档