can';在php中,关闭并重新打开浏览器后,不读取cookie值

can';在php中,关闭并重新打开浏览器后,不读取cookie值,php,cookies,setcookie,undefined-index,Php,Cookies,Setcookie,Undefined Index,我试图找出isset()和empty()与setcookie()和$\u COOKIE[]的关系。但我在路上遇到了一个路障 这是我的test.php <?php //initialize cookie $expiry = time()+60*60*9000; setcookie('name1', '4', $expiry, '/', '', '', TRUE); if (isset ($_COOKIE['name1'])) { echo 'cookievalue ' . $_

我试图找出isset()和empty()与setcookie()和$\u COOKIE[]的关系。但我在路上遇到了一个路障

这是我的test.php

<?php

//initialize cookie
$expiry = time()+60*60*9000;
setcookie('name1', '4', $expiry, '/', '', '', TRUE);

if (isset ($_COOKIE['name1'])) {

    echo 'cookievalue ' . $_COOKIE['name1'];

} else {

    echo 'cookie value not set';

}


if (!empty ($_COOKIE['name1'])) {

    echo 'cookievalue ' . $_COOKIE['name1'];

} else {

    echo 'cookie value empty';

}

?>

这是我的test1.php

<?php

if (isset ($_COOKIE['name1'])) {

    echo 'cookievalue ' . $_COOKIE['name1'];

} else {

    echo 'cookie value not set';

}


if (!empty ($_COOKIE['name1'])) {

    echo 'cookievalue ' . $_COOKIE['name1'];

} else {

    echo 'cookie value empty';

}

echo 'cookievalue ' . $_COOKIE['name1'];


?>

当我第一次加载test.php,然后加载test1.php时,一切似乎都很正常。也就是说,test1.php能够通过setcookie()读取在test.php中设置的$\u COOKIE[]变量。(不过,正如预期的那样,在test.php中输出cookie值之前,test.php必须刷新一次。)

但是,如果我关闭浏览器,重新打开它,然后只运行test1.php,我会在$u COOKIE['name1']中的name1上得到一个“未定义索引”通知

为什么test1.php无法拾取浏览器关闭前定义的$\u COOKIE变量?cookie仍应存储在计算机中。为什么在关闭并重新打开浏览器后,它不能从中提取cookie值?

您不需要isset(),它非常简单

if ($_COOKIE['name1']) {

回答我自己的问题


多亏了@Dagon,我尝试了使用不同的浏览器。它在另一个浏览器(Firefox)中工作。它在我的Chrome浏览器中不起作用(我怀疑我的Chrome浏览器上有一些反cookie扩展正在删除cookie,或者类似的东西)。

你尝试过其他浏览器吗?php的cookie通常是会话cookie,这意味着当浏览器关闭时,它们会自动删除。如果您想要持久cookie,则必须使用
会话设置cookie\u params()
:@MarcB此设置不会被setcookie()中的'expiry'参数覆盖??它应该被覆盖。使用firebug或httpfox之类的工具来观察浏览器中进出的标题,并查看cookie值是否被发回。如果不是这样,那么您在setcookie中使用的选项就有问题了,或者您的服务器VS浏览器时间太长了,从浏览器的角度来看,60*60*9000实际上已经过去了。@Dagon感谢您的建议。它在另一个浏览器(Firefox)中工作。它在我的Chrome浏览器中不起作用(我怀疑我在Chrome上有一些反cookie的扩展,它正在删除cookie——或者类似的东西),虽然为true,但没有解决问题我重写了test1.php,没有所有的isset()和empty,只有if($\u cookie['name1']){,并且它工作得很好,读取了设置好的cookie,没有问题