我试图弄清楚isset()和empty()与setcookie()和$ _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中设置的$ _COOKIE []变量。(尽管不出所料,在将cookie值输出到test.php之前,必须对test.php进行一次刷新。)
但是,如果我关闭浏览器,然后重新打开它,然后运行test1.php,则会在$ _COOKIE ['name1']中的name1上收到“未定义索引”的通知。
为什么test1.php无法在关闭浏览器之前选择$ _COOKIE变量?cookie仍应存储在计算机中。在关闭并重新打开浏览器后,为什么不能从中提取cookie值?
回答我自己的问题。
感谢@Dagon使用其他浏览器进行了尝试。它可以在其他浏览器(Firefox)中运行。它在我的Chrome浏览器中无法正常工作(我怀疑我在Chrome上有一些反cookie扩展程序正在删除cookie或类似的东西)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句