Я хочу использовать cookie
на веб-странице, и я хочу использовать его для сохранения любых необязательных переменных. но после использования setcookie
и обновления страницы isset()
не удалось обнаружить, я должен быть много обновленной страницы для ее использования,
я не могу использовать его на первой странице обновления или посещения.
PHP:
setcookie("user", "Alex Porter", time()+3600); if (isset($_COOKIE["user"])) echo "Welcome " . $_COOKIE["user"] . "!<br>"; else echo "Welcome guest!<br>"; //unset($_COOKIE['user']); //setcookie('user', '', time() - 3600);
сsetcookie("user", "Alex Porter", time()+3600); if (isset($_COOKIE["user"])) echo "Welcome " . $_COOKIE["user"] . "!<br>"; else echo "Welcome guest!<br>"; //unset($_COOKIE['user']); //setcookie('user', '', time() - 3600);
РЕЗУЛЬТАТ:
после сохранения и обновления страницы
Welcome guest!
второе обновление:
Welcome Alex Porter
Когда вы устанавливаете файл cookie, он отправляется в браузер. В следующий раз, когда браузер отправит запрос на страницу, он отправит информацию cookie обратно, и страница сможет ее использовать.
Чтобы исправить это, перенаправьте пользователя на страницу, где вы хотите отобразить данные после того, как cookie был установлен, вместо простого отображения страницы. Таким образом, вы можете использовать данные cookie.
Ну, в этом нет ничего плохого. В первый раз, когда вы обновляете, вы фактически запускаете скрипт для установки cookie. Таким образом, он выполняет оператор else.
Когда вы обновляете его во второй раз, функция isset()
возвращает true, и оператор if выполняется.
Вот живописное описание:
Однако есть проблемы с вашим скриптом. Обновление вашей страницы каждый раз обновляет время печенья до 3600 seconds
. Таким образом, вам нужно установить cookie только в том случае, если в браузере пользователя нет файла cookie, например:
if (isset($_COOKIE["user"])) echo "Welcome " . $_COOKIE["user"] . "!<br>"; else { echo "Welcome guest!<br>"; setcookie("user", "Alex Porter", time()+3600); }
Я думаю, вы хотите что-то вроде этого:
if (isset($_COOKIE["user"])) echo "Welcome " . $_COOKIE["user"] . "!<br>"; else { echo "Welcome guest!<br>"; setcookie("user", "Alex Porter", time()+3600); }
Cookie установлен на определенный путь и домен. Вы должны изменить setcookie () на
setcookie ("user", "Alex Porter", time()+3600, "/", "youdomain.com");
Если установлено значение '/', файл cookie будет доступен во всем домене (youdomain.com).
Cookie будет отображаться после обновления страницы.
Ваш код также можно упростить:
echo "Welcome " . isset($_COOKIE["user"]) ? $_COOKIE["user"] : "guest" . "!<br>";
Данные $_COOKIE
считываются из данных запроса клиента и не записываются сразу setCookie()
. Это нормальное поведение и должно быть включено в поток вашей программы.
Если вы хотите, чтобы данные cookie были немедленно доступны в вашем случае, вы можете попробовать что-то вроде этого:
if (isset($_COOKIE["user"])) echo "Welcome " . $_COOKIE["user"] . "!<br>"; else { $user = "Alex Porter"; setcookie("user", $user, time()+3600); echo "Welcome $user!<br>"; }