Проблемы с удалением файлов cookie не будут отменены

Я попытался найти руководство по php и интернету о том, как удалить файлы cookie, и я пробовал его точно так же, как они все говорят:

setcookie("name", '', 1); 

или

 setcookie("name", '', time()-3600); 

Но когда я проверяю файлы cookie в диалоговом окне файлов cookie в Firefox, он все еще там с одинаковым значением. Я установил этот файл cookie, используя следующую строку:

 setcookie("name", $value, time() + 259200, $path); 

Я нашел этот вопрос в stackoverflow:, но ни один из ответов не решил проблему. Я также попытался включить все параметры, как сказал автор, но это не повлияло.

Кто-нибудь видит проблему?

В руководстве указано :

Файлы cookie должны быть удалены с теми же параметрами, с которыми они были установлены. Если аргумент value – это пустая строка или FALSE , а все остальные аргументы соответствуют предыдущему вызову setcookie, cookie с указанным именем будет удален из удаленного клиента. Это внутренне достигается путем установки значения «удаленный» и срок действия до одного года в прошлом.

Поэтому также убедитесь, что $path указан правильно – также при его удалении . Например, если файл cookie был указан в подкаталоге, вы не сможете удалить его из родительских или дочерних каталогов (или обоих).

Я не совсем уверен, как работают разрешения, но вы можете использовать панель инструментов веб-разработчиков, чтобы узнать, что путь к файлу cookie, который вы пытаетесь удалить.

Хорошо, я действительно не понимаю, но теперь это работает. Магический код:

 setcookie("name", '', 1, $path); 

Разве я не пробовал это?! Как бы то ни было, сейчас это работает. Спасибо за вашу помощь, люди!

Я попытался использовать

 setcookie("name", "", -1); 

и на моем сервере с Apache / PHP5 он очистил файл cookie (по крайней мере var_dump ($ _ COOKIE) показал пустой массив).

Я удивлен, что никто не упомянул об этом (или, может быть, я пропустил это), но домен тоже важен ! Если вы находитесь на subdomain.example.com, а файл cookie – с .example.com, вам необходимо явно указать параметр домена, иначе он будет считать текущий домен, и он не будет работать.

 setcookie('cookiename', FALSE, -1, '/', '.example.com'); 

Значение поддоменов не удалит файлы cookie из родительского домена.

Если вы удаляете cookie для определенного пути, а ваш параметр path заканчивается конечной косой чертой '/', то он будет работать в Firefox и IE, но не будет работать в Chrome и Opera. Если нет косой черты, она будет работать только в Chrome и Opera.

Поэтому вы должны использовать оба:

 setcookie('cookiename', '', time() - 60*60*24, $chatPath); // WebKit setcookie('cookiename', '', time() - 60*60*24, $chatPath . '/'); // Gecko, IE 

установить cookie

setcookie ('cookiename', $ cookie_value, time () + (86400 * 30), "/"); // 86400 = 1 день

unset cookie

setcookie ('cookiename', '', time () – 3600, "/");

Не нужно паниковать. Просто скопируйте функцию, которую вы используете, чтобы установить cookie и теперь минус время. Не путайте, делайте это легко и ясно.

Вы пытались установить время на небольшое значение и использовать значение для cookie?

 setcookie("name", 'n', 1); 

Вы проверяли, отправил ли ваш скрипт свои HTTP-заголовки?

 if (headers_sent()) { trigger_error("Cant change cookies", E_USER_NOTICE); } 

Случается со мной также один раз в десять раз. Я думаю, что это проблема с тем, как мы кодируем.

Это мой код

 setcookie("token", "", time() - 36000, "/"); 

Я стараюсь использовать

 ob_start(); 

на майне l

У меня была аналогичная проблема.

Я обнаружил, что по какой-то причине, повторяя что-то из logout.php, он фактически удаляет файл cookie:

 echo '{}'; setcookie('username', '', time()-3600, '/'); 

Я удивлен, что никто еще не опубликовал это, но это отлично работает для меня:

СОЗДАТЬ или ИЗМЕНИТЬ файл cookie по имени:

 $_COOKIE['myCookieName'] = 'I can be changed to whatever u want'; 

УДАЛИТЬ файл cookie по имени:

 unset($_COOKIE['myCookieName']); 

Иногда вы сохраняли cookie на другом пути, чем пытаетесь удалить / использовать его.

Идите, например. Chrome cookie и проверьте путь к файлу cookie, затем добавьте путь к команде setcookie и удалите его следующим образом:

 setcookie( "my_cookie_name","",1,'/mypath'); 

Попытка удалить или удалить файл cookie, который был сохранен на неправильном пути, не будет работать и может быть очень неприятным.

Просто определите пользовательскую функцию в глобальном файле основных функций, например global.php

 function delete_cookie() { unset($_COOKIE['cookiename']); setcookie('cookiename',NULL,time()-3600, '/'); return true; } с function delete_cookie() { unset($_COOKIE['cookiename']); setcookie('cookiename',NULL,time()-3600, '/'); return true; } 

и используйте эту функцию в верхней части html-кода, например

 include('global.php') if(isset($_GET['delete_cookie'])) { delete_cookie(); //if you want to pass the parameters into the function also possible like delete_cookie(param1); } в include('global.php') if(isset($_GET['delete_cookie'])) { delete_cookie(); //if you want to pass the parameters into the function also possible like delete_cookie(param1); } 

Это сделало трюк для меня:

 setcookie("brownie","",1,'/'); unset($_COOKIE["brownie"]); 
 var remember = $.cookie('auto_login'); if (remember == 'true') { var username = $.cookie('username'); var password = $.cookie('password'); $('#username').val(username); $('#password').val(password); } $('#logsub').click(function (event) { if ($('#auto_login').is(':checked')) { var username = $('#username').val(); var password = $('#password').val(); // set cookies to expire in 14 days $.cookie('username', username, {expires: 14}); $.cookie('password', password, {expires: 14}); $.cookie('auto_login', true, {expires: 14}); } else { // reset cookies $.cookie('username', null); $.cookie('password', null); $.cookie('auto_login', null); } });