2016-12-09 2 views
-1

У меня есть эта проблема с печеньем:PHP Cookie все еще существует после того, как удален

setcookie('NAME', '', time() - 3600); 
session_unset(); 
session_destroy(); 

Cookie все еще существую в браузере, и я могу увидеть значение с print_r($_COOKIE); Но я не могу получить доступ к содержимому файла (это право потому что сеанс удален на стороне сервера). Но почему куки все еще видны в браузере, пока я не закрою его?

+2

вы устанавливаете куки истекает, поэтому на следующей странице загрузки он будет удален браузером. – cmorrissey

+0

Какой печенье? если вы пытаетесь отключить cookie сеанса, используйте 'setcookie (session_name(), time() - 3600);' (никогда не используйте литерал для имени сеанса, если только он не является параметром для session_name()) – symcbean

+0

Да, это session cookie, и я не настраиваю его при запуске сеанса, и он появляется автоматически – Klapsius

ответ

0

вы устанавливаете срок действия файла cookie, поэтому при следующей загрузке страницы он будет удален браузером. - cmorrissey

cmorrisey является правильным. В вашем примере кода я вижу, что вы установили истечение на час назад. Вы также можете использовать 0 для истечения срока действия файла cookie в конце сеанса, если это предпочтительнее.

PHP печенье: http://www.w3schools.com/php/func_http_setcookie.asp

Истечение поле является необязательным. Указывает, когда срок действия файла cookie истекает. Значение: time() + 86400 * 30, установит срок действия файла cookie через 30 дней. Если этот параметр опущен или установлен в 0, файл cookie истекает в конце сеанса (когда браузер закрывается). Значение по умолчанию 0

session_name()/session.name - http://php.net/manual/en/function.session-name.php

+0

Как я уже сказал, я не начинаю этот файл cookie вообще. Он появляется автоматически, когда я начинаю сеанс. Но я не хочу хранить эти данные. – Klapsius

+0

Имя сеанса ссылается на имя сеанса, которое используется в файлах cookie и URL-адресах (например, PHPSESSID). Он должен содержать только буквенно-цифровые символы; он должен быть коротким и описательным (например, для пользователей с включенными предупреждениями cookie). Если имя указано, имя текущего сеанса изменяется на его значение. – mrvnmchm

+0

string session_name ([string $ name]) session_name() возвращает имя текущего сеанса. Если задано $ name, session_name() обновит имя сеанса и вернет имя старого сеанса. – mrvnmchm

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