2013-11-16 2 views
0

Рассмотрим следующий код snippet-

if(some_condition){ 
     echo $candidate_id= $row_id['id']; 
     setcookie("candidate_id", $candidate_id, time()+3600); 
     echo "<script>console.log(document.cookie)</script>"; 
    } 
    if(isset($_COOKIE['candidate_id'])){ 
     echo "from cookie"; 
     echo $candidate_id= $_COOKIE['candidate_id'];exit; 
    } 
    else{ 
     echo "not from cookie"; 
     echo $candidate_id= $row_id['id'];exit; 
    } 

Первый раз это дает правильный output-

288not from cookie288 

и в консоли,

candidate_id=288; PHPSESSID=kfpjvl9j4rluh1stjdjcijgi75 

Но если я снова снова запустил код, я получу следующие выходы

289from cookie288 

и в консоли,

candidate_id=289; PHPSESSID=kfpjvl9j4rluh1stjdjcijgi75 

Это означает, что на втором прогоне, значение куки модифицируются, но $_COOKIE['candidate_id'] не выборки обновленного значения. Но почему?

+0

отключение печенья до того, как setcookie победит всю цель настройки печенья здесь. –

ответ

1

$_COOKIE Инициализировано на основе куки-файлов по запросу пользователя. Он не обновляется по звонкам до setcookie().

Вы могли поддельной это делать что-то вроде этого:

function mySetCookie($name, $value, $time) { 
    setcookie($name, $value, $time); 
    $_COOKIE[$name] = $value; 
} 

Затем вызовите mySetCookie(), где бы вы назвали бы SetCookie(). Это, возможно, ошибка, хотя я не тестировал его и довольно уверен, что он столкнется с проблемами в некоторых конфигурациях.

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