Я попытался искать php руководство и Интернет о том, как удалить cookie, и я попробовал его тот же самый способ, которым они все говорят:
setcookie("name", '', 1);
или
setcookie("name", '', time()-3600);
Но когда я проверяю cookie в диалоговое окно cookie в Firefox, это все еще там с тем же значением. Я установил этот cookie с помощью следующей строки:
setcookie("name", $value, time() + 259200, $path);
Я нашел этот вопрос на stackoverflow: но ни один из ответов не решил проблему. Я также пытался вставить всех параматерей, как автор сказал, но это не имело никакого эффекта.
Кто-либо видит проблему?
Файлы cookie должны быть удалены с теми же параметрами, с которыми они были установлены. Если аргумент значения является пустой строкой или
FALSE
, а все остальные аргументы соответствуют предыдущему вызову setcookie, то cookie с указанным именем будет удален с удаленного клиента. Внутренне это достигается путем установки значения «удалено» и срока действия на один год в прошлом.
Также убедитесь, что $ path
указан правильно - также при его удалении . Например, если файл cookie был указан в подкаталоге, вы не сможете удалить его ни из родительского, ни из дочернего каталогов (или из обоих).
Я не совсем уверен, как работают разрешения, но вы можете использовать панель инструментов веб-разработчика, чтобы узнать, какой путь относится к куки, которую вы пытаетесь удалить.
Хотя со мной тоже такое случается один раз из десяти. Думаю, это проблема в том, как мы кодируем.
Это мой код
setcookie("token", "", time() - 36000, "/");
Вы проверяли, отправляет ли ваш скрипт уже свои HTTP-заголовки?
if (headers_sent()) {
trigger_error("Cant change cookies", E_USER_NOTICE);
}
Ок, я действительно не понимаю, но теперь это работает. Магический код:
setcookie("name", '', 1, $path);
Разве я уже не пробовал это??! Неважно, теперь работает. Спасибо за помощь, люди!
Я пробовал использовать
setcookie("name", "", -1);
, и на моем сервере с Apache / PHP5 он очистил cookie (по крайней мере, var_dump ($ _ COOKIE) показал пустой массив).
Вы пробовали установить для времени небольшое значение и использовать значение для cookie?
setcookie("name", 'n', 1);