2016-02-08 6 views
0

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

if(isset($_SESSION)){ 
    $_SESSION['email']=$username; 
    $_SESSION['id']=$query['id']; 
    $_SESSION['name']=$query['name']; 
    $_COOKIE[$cookiename]=$query['name']; 


    $cookiename="user"; 
    $cookie_value = "John Doe"; 
    setcookie($cookiename,$cookie_value, time() + (86400 * 30),"/"); 
    if (!$session->Check()){ 
     echo $cookiename ; 
    }else { 
     echo $_COOKIE[$cookiename]; 
    } 

ответ

2
  1. Это происходит потому, что, когда вы звоните setcookie() вы подключаете куки для текущего ответа (если текущий запрос завершается).

  2. $ _COOKIE будет иметь значение, когда запрос будет сделан с уже установленным заголовком файла cookie. I.e cookie отправляется на сервер.

Так что, когда только # 1 происходит у вас нет ничего в $ _COOKIE, но когда-то # 2 произойдет, вы будете иметь значение в $ _COOKIE

EDIT: Почти все, что нужно упоминается в руководство http://php.net/manual/en/function.setcookie.php

SetCookie() определяет куки для отправки вместе с остальными заголовками HTTP После куки были установлены, они могут быть доступны на следующей загрузки страницы с массивом $ _COOKIE , Значения cookie могут также существуют в $ _REQUEST.

+0

/* сейчас используется, но не работает .. */$ cookie_name = "praveen_cookie"; \t \t \t \t \t $ cookie_value = $ query ['name']; \t \t \t \t \t setcookie ($ cookie_name, $ cookie_value, time() + (86400 * 30), "/"); –

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