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


can't read cookie value after browser close and reopen, in php

我试图弄清楚isset()和empty()与setcookie()和$_COOKIE[]之间的关系。但我在路上遇到了一个路障。

这是我的测试.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中设置的$_COOKIE[]变量。(尽管不出所料,在test.php中输出cookie值之前,test.php必须刷新一次。)

但是,如果我关闭浏览器并重新打开它,然后只运行test1.php,我会在$_COOKIE['name1']中的name1上收到"未定义索引"通知。

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

回答我自己的问题。

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

您不需要isset()它就像一样简单

if ($_COOKIE['name1']) {