在浏览器关闭并重新打开后,在php中无法读取cookie值
I was trying to figure out how isset() and empty() related to setcookie() and $_COOKIE[]. But I came upon a road-block on the way.
Here is my 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';
}
?>
Here is my 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'];
?>
When I first load test.php, and then test1.php, everything seems to work fine. That is, test1.php is able to read the $_COOKIE[] variable that was set in test.php via setcookie(). (Although, as expected, test.php had to be refreshed once before cookie values were output in test.php.)
However, if I close the browser, and reopen it, and then just run test1.php, I get an "Undefined Index" notice on name1 in $_COOKIE['name1'].
Why can't test1.php pick up the $_COOKIE variable defined before the browser was closed? The cookie should still be stored in the computer. Why can't it pull up the cookie value from it after closing and reopening the browser?
我试图找出与setcookie()和$ _COOKIE []相关的isset()和empty() 。 但是我在途中遇到了障碍。 p>
这是我的test.php p>
&lt;?php
\ n //初始化cookie
$ expiry = time()+ 60 * 60 * 9000;
setcookie('name1','4',$ expiry,'/','','',TRUE);
\ nif(isset($ _COOKIE ['name1'])){
echo'cachevalue'。 $ _COOKIE ['name1'];
} else {
echo'cookie value not set';
}
if(!empty($ _COOKIE ['name1']) ){
echo'cookyvalue'。 $ _COOKIE ['name1'];
} else {
echo'cookie value empty';
}
?&gt;
code> pre>
这是我的test1.php p>
&lt;?php
if(isset($ _COOKIE ['name1'])){
echo'cookyvalue'。 $ _COOKIE ['name1'];
} else {
echo'cookie value not set';
}
if(!empty($ _COOKIE ['name1']) ){
echo'cookyvalue'。 $ _COOKIE ['name1'];
} else {
echo'cookie value empty';
}
echo'cookyvalue'。 $ _COOKIE ['name1'];
?n;&gt;
code> pre>
当我第一次加载 test.php strong>时, 那么 test1.php strong>,一切似乎都运转良好。 也就是说, test1.php strong>能够通过setcookie()读取在 test.php strong>中设置的$ _COOKIE []变量。 (尽管如预期的那样,test.php必须在test.php中输出cookie值之前刷新一次。) p>
但是,如果我关闭浏览器,然后重新打开它,然后 只需运行 test1.php strong>,我就会在$ _COOKIE ['name1']的name1上收到“Undefined Index”通知。 p>
为什么不能 test1.php strong>拿起浏览器关闭前定义的$ _COOKIE变量? cookie仍应存储在计算机中。 关闭并重新打开浏览器后,为什么不能从中提取cookie值? p>
div>
Answering my own question.
Thanks to @Dagon tried it using a different browser. It works in another browser (Firefox). It wasn't working in my Chrome browser (I suspect I have some anti-cookie extension on Chrome that's deleting the cookie -- or something like that).
You dont need isset() its as simple as
if ($_COOKIE['name1']) {