2011-10-07 2 views
1

Я новичок в cookies. Я создал php-класс пользователя, который использует куки-файл для хранения уникального ключа MD5, чтобы запомнить пользователя, который вошел в систему. Однако cookie не сбрасывается при выходе пользователя из системы. Я создал функцию из кода, который я обнаружил при переполнении стека, чтобы очистить файлы cookie при выходе из системы.Cookie не сбрасывается в PHP

static public function clearCookies() 
{ 
    $past = time() - 3600; 
    foreach ($_COOKIE as $key => $value) 
    { 
      $value = ''; 
     setcookie($key, $value, $past); 
     setcookie($key, $value, $past, '/'); 
    } 
} 

Однако cookie по-прежнему не очищается.

Это строка кода, которая устанавливает куки

setcookie("auth_key", $authKey, time() + 60 * 60 * 24 * 7); 

Благодаря загодя

ответ

1

Вот решение, которое сработало.

Я изменил

setcookie("auth_key", $authKey, time() + 60 * 60 * 24 * 7); 

в

setcookie("auth_key", $authKey, time() + 60 * 60 * 24 * 7, '/'); 

Кажется, что печенье не сбрасывается, потому что URL он сбрасывается из отличался от URL он был установлен. После добавления '/' он может быть сброшен с нового URL-адреса.

1

Попробуйте добавить

static public function clearCookies() 
{ 
    $past = time() - 3600; 
    foreach ($_COOKIE as $key => $value) 
    { 
      $value = ''; 
     setcookie($key, $value, $past); 
     setcookie($key, $value, $past, '/'); 
     unset($_COOKIE[$key]); 
    } 
} 

Вы должны отметить, что изменилось печенье читаемы после отправки их клиенту (если вы не установите их вручную через $ _COOKIE), значит, следующее обновление.

+0

Как 'unset ($ _ COOKIE [$ key]) 'приносит пользу ситуации? – webbiedave

+0

Я опередил себя. Пробовал это на реальном сервере, это не сработало. – simpleengine

+0

@webbiedave: пользователю не нужно перезагружать страницу, чтобы увидеть изменения в остальной части его кода. – genesis

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