Я пытался выяснить, как 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 может прочитать переменную $ _COOKIE [], которая была установлена в test.php через setcookie (). (Хотя, как и ожидалось, test.php нужно было обновить один раз, прежде чем значения cookie были выведены в test.php.)
Однако, если я закрою браузер и снова открою его, а затем просто запустите test1.php, Я получаю уведомление «Неопределенный индекс» для name1 в $ _COOKIE [‘name1’].
Почему не могу test1.php подобрать переменную $ _COOKIE, определенную до закрытия браузера? Файл cookie все еще должен храниться на компьютере. Почему он не может извлечь значение cookie из него после закрытия и повторного открытия браузера?
Отвечая на мой собственный вопрос.
Благодаря @Dagon попробовал это с помощью другого браузера. Работает в другом браузере (Firefox). Он не работал в моем браузере Chrome (я подозреваю, что в Chrome есть какое-то расширение против cookie, которое удаляет cookie — или что-то в этом роде).
Вам не нужно isset () так просто, как
if ($_COOKIE['name1']) {