Доступ к $ _COOKIE сразу после setcookie ()

Я пытаюсь получить доступ к значению cookie (использование $_COOKIE) сразу после вызова setcookie() функция в PHP. Когда я делаю так, $_COOKIE['uname'] не установлен. Почему?

Отметьте, однако, это $_COOKIE['uname'] установлен как ожидалось после следующего выполнения сценария, такой как после обновления страницы.

setcookie('uname', $uname, time() + 60 * 30);
echo "Cookie value: " . $_COOKIE['uname'];
69
задан outis 25 March 2012 в 20:00
поделиться

2 ответа

$_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);  
}
37
ответ дан 24 November 2019 в 13:39
поделиться

Cookie не устанавливается до тех пор, пока ответ не будет отправлен обратно клиенту, и не будет доступен в вашем PHP до следующего запроса от клиента после этого.

Однако, когда вы установите cookie в вашем скрипте, вы можете сделать:

setcookie('uname', $uname, time()+60*30);
$_COOKIE['uname'] = $uname;
136
ответ дан 24 November 2019 в 13:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: