我试图找出与setcookie()和$ _COOKIE []有关的isset()和empty()。但是我在途中遇到了障碍。
这是我的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 []变量。 (尽管如预期的那样,test.php必须在test.php中输出cookie值之前刷新一次。)
但是,如果我关闭浏览器并重新打开它,然后只运行 test1.php ,我会在$ _COOKIE ['name1']的name1上收到“未定义索引”通知。< / p>
为什么不能 test1.php 选择在浏览器关闭之前定义的$ _COOKIE变量? cookie仍应存储在计算机中。关闭并重新打开浏览器后,为什么不能从中提取cookie值?
答案 0 :(得分:1)
回答我自己的问题。
感谢@Dagon尝试使用其他浏览器。它适用于其他浏览器(Firefox)。它在我的Chrome浏览器中无法正常工作(我怀疑我在Chrome上有一些反cookie扩展程序正在删除Cookie - 或者类似的东西)。
答案 1 :(得分:-1)
你不需要isset()就像
一样简单if ($_COOKIE['name1']) {