我試圖弄清楚setset()和$ _COOKIE []與setset()和empty()的關係。但是我在路上遇到了一個障礙。無法在瀏覽器關閉並重新打開後讀取cookie值,在php
這裏是我的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的收到的cookie值在test.php的輸出被刷新一次。)
不過,如果我關閉瀏覽器,然後重新打開它,然後只需運行test1.php ,我在$ _COOKIE ['name1']的name1上收到了「Undefined Index」通知。
爲什麼不能test1.php拿起瀏覽器關閉之前定義的$ _COOKIE變量? Cookie仍應存儲在計算機中。爲什麼不能在關閉並重新打開瀏覽器之後從其中提取cookie值?
您嘗試了其他瀏覽器嗎? – 2014-10-07 22:01:34
php的cookie通常是SESSION cookie,這意味着它們在瀏覽器關閉時會自動刪除。如果你想要一個持久cookie,那麼你必須用'session_set_cookie_params()'正確設置到期時間:http://php.net/manual/en/session.configuration.php#ini.session.cookie-lifetime – 2014-10-07 22:07:07
@MarcB這個設置不會被setcookie()中的'expiry'參數覆蓋。 – 2014-10-07 22:12:40