2013-11-19 3 views
3

Есть ли разница между установкой файла cookie через setcookie() и $_COOKIE?

Иногда, при установке куки через setcookie, я не получаю значение этого печенья через $ _COOKIE [ «cookie_name»]. Но JS console.log сразу после setcookie, показывает, что куки установлен, но если я попробовать чтобы получить значение cookie через $ _COOKIE, я не получаю обновленное значение.

Я смущен .. !!

ответ

3

$_COOKIE устанавливается, когда страница загружается из-за отсутствия состояния в сети. Если вам нужен немедленный доступ, вы можете установить $_COOKIE['cookie_name'] самостоятельно или использовать промежуточную переменную.

Например:

if (isset($_COOKIE['cookie_name'])) { 
    // get data from cookie for local use 
    $uname = $_COOKIE['cookie_name']; 
} 
else { 
    // set cookie, local $uname already set 
    setcookie('cookie_name', $cookie_value, time() + 1800); 
} 

Так что вещь печенье не установлен, пока ответ не посылается обратно клиенту, и не недоступна в вашем PHP до следующего запроса от клиента после этого ,

+0

Спасибо, разрешите мои сомнения. Хотя я знал, что это нужно сделать таким образом, но теперь я также знаю причину этого. –

+0

Добро пожаловать! –

+4

** Точный ** 'Копировать Вставить' этого ответа. По крайней мере, ссылку Оригинальный ответ. Уважайте людей за их вклад. http://stackoverflow.com/questions/3230133/accessing-cookie-immediately-after-setcookie –

0

В PHP мы можем установить cookie с функцией setcookie(). Синтаксис функции

setcookie(name,value,expire,path,domain,secure) 

Например, setcookie('name',$name,0,'/'); создаст куки с именем имя с значением $ имя переменной в корневой директории «/». Чтобы получить доступ к файлу cookie, мы можем использовать $_COOKIE['cookiename'];

+0

Мне известно о синтаксисе setcookie, и, как я уже сказал, console.log после установки cookie с помощью setcookie дает правильный результат, но я не могу получить обновленное значение cookie через $ _COOKIE [cookie_name]. Вот почему вопрос. –

+0

, где вы настраиваете cookie? В корне? – Jenz

+0

'setcookie (« кандидат_ид », $ new_candidate_id, time() + 3600);' использование этого для установки cookie. Использование 'echo '"; 'для консольного вывода и после этого' if (isset ($ _ COOKIE [' candid_id '])) { \t \t echo "from cookie". $ _ COOKIE [ 'candid_id'];} ' –

1

В функции setcookie вы можете установить только имя файла cookie. Если вы хотите получить это значение cookie, вы можете взять его через $_COOKIE['name']

Убедитесь, что при создании файла cookie вам необходимо установить имя домена в функции setcookie.

3

Вы не на самом деле может «установить» куки с некоторым кодом, как это:

$_COOKIE['cookie'] = $my_var;

Все это делает добавить новое значение в $_COOKIE массива. Нет Set-Cookie HTTP-заголовок отправляется обратно клиенту (браузеру) в ответ, и на клиенте не создается cookie.

Используйте функцию setcookie() для установки печенья.

Текущий принятый ответ правильно указывает, что $_COOKIE установлен/инициализирован в начале процесса PHP и после этого не обновляется. Вы можете обновить его самостоятельно, но не ожидайте, что это значение будет придерживаться следующего запроса.

Смежные вопросы