Я пытаюсь получить доступ к значению cookie (использование $_COOKIE
) сразу после вызова setcookie()
функция в PHP. Когда я делаю так, $_COOKIE['uname']
не установлен. Почему?
Отметьте, однако, это $_COOKIE['uname']
установлен как ожидалось после следующего выполнения сценария, такой как после обновления страницы.
setcookie('uname', $uname, time() + 60 * 30);
echo "Cookie value: " . $_COOKIE['uname'];
$_COOKIE
устанавливается при загрузке страницы, что обусловлено безэталонной природой Интернета. Если вам нужен немедленный доступ, вы можете установить $_COOKIE['uname']
самостоятельно или использовать промежуточную переменную.
Например:
if (isset($_COOKIE['uname'])) {
// get data from cookie for local use
$uname = $_COOKIE['uname'];
}
else {
// set cookie, local $uname already set
setcookie('uname', $uname, time() + 1800);
}
Cookie не устанавливается до тех пор, пока ответ не будет отправлен обратно клиенту, и не будет доступен в вашем PHP до следующего запроса от клиента после этого.
Однако, когда вы установите cookie в вашем скрипте, вы можете сделать:
setcookie('uname', $uname, time()+60*30);
$_COOKIE['uname'] = $uname;