Intereting Posts
Doctrine2 экспортирует объект в массив Как вы читаете из многомерного варианта массива, возвращаемого из COM-объекта в PHP? Set config item (csrf) не работает в Codeigniter нам нужно перезапустить apache + APC после развертывания новой версии приложения? API-интерфейс Analytics – Получить данные MCF = пустые результаты Будет ли файл flock'ed разблокирован, когда процесс неожиданно завершится? Проблемная проблема – сортировка XML-данных с использованием PHP Не удалось подключиться к oci_connect Отображать значение bindParam с использованием PHP PDO Проверка загрузки изображений на PHP Переназначение массива освобождает память, используемую им? Изменения в php не отображаются сразу при использовании MAMP в OSX и PHP версии 5.5.3 php и вложенный json: как я могу получить доступ к этому элементу? найти определенные недели в месяц, используя php Найти и заменить дубликаты в массиве

Удалить файл cookie

Когда я хочу удалить Cookie, я пытаюсь

unset($_COOKIE['hello']); 

Я вижу в своем браузере cookie от firefox, что файл cookie все еще существует. Как я могу удалить cookie?

Вы можете попробовать это

 if (isset($_COOKIE['remember_user'])) { unset($_COOKIE['Hello']); unset($_COOKIE['HelloTest1']); setcookie('Hello', null, -1, '/'); setcookie('HelloTest1', null, -1, '/'); return true; } else { return false; } с if (isset($_COOKIE['remember_user'])) { unset($_COOKIE['Hello']); unset($_COOKIE['HelloTest1']); setcookie('Hello', null, -1, '/'); setcookie('HelloTest1', null, -1, '/'); return true; } else { return false; } с if (isset($_COOKIE['remember_user'])) { unset($_COOKIE['Hello']); unset($_COOKIE['HelloTest1']); setcookie('Hello', null, -1, '/'); setcookie('HelloTest1', null, -1, '/'); return true; } else { return false; } 

Установите значение «» и дату истечения срока действия до вчерашнего дня (или любую дату в прошлом)

 setcookie("hello", "", time()-3600); 

Затем файл cookie истечет при следующем загрузке страницы.

$_COOKIE способом удаления cookie является очистка значения $_COOKIE и файла cookie браузера:

 if (isset($_COOKIE['key'])) { unset($_COOKIE['key']); setcookie('key', '', time() - 3600, '/'); // empty value and old timestamp } с if (isset($_COOKIE['key'])) { unset($_COOKIE['key']); setcookie('key', '', time() - 3600, '/'); // empty value and old timestamp } 

Это отключит cookie в вашем коде, но поскольку переменная $ _COOKIE обновляется по каждому запросу, она просто вернется к следующему запросу страницы.

Чтобы фактически избавиться от файла cookie, установите дату истечения срока действия в прошлом:

 // set the expiration date to one hour ago setcookie("hello", "", time()-3600); 

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

 setcookie("hello", "", 1); 

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

Я установил файл cookie с использованием значения пути «/», но не имел никакого значения пути, когда пытался его очистить, поэтому он не понял. Итак, вот пример того, что сработало:

Настройка файла cookie:

 $cookiePath = "/"; $cookieExpire = time()+(60*60*24);//one day -> seconds*minutes*hours setcookie("CookieName",$cookieValue,$cookieExpire,$cookiePath); 

Очистка файла cookie:

 setcookie("cookieName","", time()-3600, $cookiePath); unset ($_COOKIE['cookieName']); 

Надеюсь, это поможет.

Если вы установите срок действия файла cookie в прошлом, браузер удалит его. См. Пример setcookie () delete на php.net

См. Образец с надписью « Пример №2 setcookie () удалить пример » из документов PHP. Чтобы очистить cookie от браузера, вам нужно сообщить браузеру, что срок действия файла cookie истек … браузер удалит его. unset поскольку вы использовали его, просто удаляет cookie 'hello' из массива COOKIE.

Так работает код setcookie () PHP v7, когда вы это делаете:

 <?php setcookie('user_id',''); setcookie('session',''); ?> 

Из вывода tcpdump во время нюхания на порт 80 сервер отправляет клиенту (браузеру) следующие HTTP-заголовки:

 Set-Cookie: user_id=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0 Set-Cookie: session=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0 

Наблюдая пакеты в следующих запросах, браузер больше не отправляет эти файлы cookie в заголовки

Чтобы удалить cookie, вам нужно просто установить значение NULL:

«Если вы установили cookie с недостоверными значениями для времени истечения срока действия, пути или домена, вы должны предоставить те же самые значения снова, когда вы удаляете cookie для файла cookie, который будет удален правильно». Цитата из книги «Изучение PHP5».

Поэтому этот код должен работать (работает для меня):

Настройка файла cookie: setcookie('foo', 'bar', time() + 60 * 5);

Удаление файла cookie: setcookie('foo', '', time() + 60 * 5);

Но я заметил, что все устанавливают дату истечения срока годности, это необходимо и почему?

Чтобы удалить все файлы cookie, вы можете написать:

 foreach ($_COOKIE as $key => $value) { unset($value); setcookie($key, '', time() - 3600); } с foreach ($_COOKIE as $key => $value) { unset($value); setcookie($key, '', time() - 3600); } 

Просто установите дату истечения срока действия на час назад, если вы хотите «удалить» cookie, например:

 setcookie ("TestCookie", "", time() - 3600); 

или

 setcookie ("TestCookie", "", time() - 3600, "/~rasmus/", "example.com", 1); 

Источник: http://www.php.net/manual/en/function.setcookie.php

Вы должны использовать filter_input() для всех глобальных переменных, которые посетитель может ввести / манипулировать, например:

 $visitors_ip = filter_input(INPUT_COOKIE, 'id'); 

Вы можете прочитать об этом здесь: http://www.php.net/manual/en/function.filter-input.php и здесь: http://www.w3schools.com/php/func_filter_input.asp

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

 if (isset($_COOKIE['remember_user'])) { unset($_COOKIE['Hello']); unset($_COOKIE['HelloTest1']); setcookie('Hello', null, -1, '/'); setcookie('HelloTest1', null, -1, '/'); return true; } else { return false; } с if (isset($_COOKIE['remember_user'])) { unset($_COOKIE['Hello']); unset($_COOKIE['HelloTest1']); setcookie('Hello', null, -1, '/'); setcookie('HelloTest1', null, -1, '/'); return true; } else { return false; } с if (isset($_COOKIE['remember_user'])) { unset($_COOKIE['Hello']); unset($_COOKIE['HelloTest1']); setcookie('Hello', null, -1, '/'); setcookie('HelloTest1', null, -1, '/'); return true; } else { return false; } 

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

Это означает, что даже если функция unset работает, на компьютере все равно будет 2 куки. Задача, с логической точки зрения, состоит в том, чтобы удалить файлы cookie, если это возможно, и если это действительно так, истечет срок ее действия; чтобы получить «самый чистый» результат.

Итак, я думаю, нам лучше делать:

 if (isset($_COOKIE['remember_user'])) { setcookie('Hello', null, -1, '/'); setcookie('HelloTest1', null, -1, '/'); unset($_COOKIE['Hello']); unset($_COOKIE['HelloTest1']); return true; } else { return false; } с if (isset($_COOKIE['remember_user'])) { setcookie('Hello', null, -1, '/'); setcookie('HelloTest1', null, -1, '/'); unset($_COOKIE['Hello']); unset($_COOKIE['HelloTest1']); return true; } else { return false; } с if (isset($_COOKIE['remember_user'])) { setcookie('Hello', null, -1, '/'); setcookie('HelloTest1', null, -1, '/'); unset($_COOKIE['Hello']); unset($_COOKIE['HelloTest1']); return true; } else { return false; } 

Спасибо, и хорошего дня 🙂

 $cookie_name = "my cookie"; $cookie_value = "my value"; $cookie_new_value = "my new value"; // Create a cookie, setcookie($cookie_name, $cookie_value , time() + (86400 * 30), "/"); //86400 = 24 hours in seconds // Get value in a cookie, $cookie_value = $_COOKIE[$cookie_name]; // Update a cookie, setcookie($cookie_name, $cookie_new_value , time() + (86400 * 30), "/"); // Delete a cookie, setcookie($cookie_name, '' , time() - 3600, "/"); // time() - 3600 means, set the cookie expiration date to the past hour. 

Это просто!

 setcookie("cookiename", "cookievalue", 1); 

Вы можете установить переменную сеанса, основанную на значениях cookie

 session_start(); if(isset($_COOKIE['loggedin']) && ($_COOKIE['loggedin'] == "true") ){ $_SESSION['loggedin'] = "true"; } echo ($_SESSION['loggedin'] == "true" ? "You are logged in" : "Please Login to continue"); 

Вы можете просто использовать эту функцию настройки:

 function unset_cookie($cookie_name) { if (isset($_COOKIE[$cookie_name])) { unset($_COOKIE[$cookie_name]); setcookie($cookie_name, null, -1); } else { return false; } } с function unset_cookie($cookie_name) { if (isset($_COOKIE[$cookie_name])) { unset($_COOKIE[$cookie_name]); setcookie($cookie_name, null, -1); } else { return false; } } 

Если вы хотите удалить $ _COOKIE ['user_account'].
Просто используйте:

 unset_cookie('user_account'); 

Вы должны удалить файлы cookie с php на своем сервере, а также с js для своего браузера. (Они сделали с php, но файлы cookie также находятся в клиенте браузера):

Пример:

 if ($_GET['action'] == 'exit'){ // delete cookies with js and then in server with php: echo ' <script type="text/javascript"> var delete_cookie = function(name) { document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:01 GMT;"; }; delete_cookie("madw"); delete_cookie("usdw"); </script> '; unset($_COOKIE['cookie_name']); unset($_COOKIE['cookie_time']); с if ($_GET['action'] == 'exit'){ // delete cookies with js and then in server with php: echo ' <script type="text/javascript"> var delete_cookie = function(name) { document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:01 GMT;"; }; delete_cookie("madw"); delete_cookie("usdw"); </script> '; unset($_COOKIE['cookie_name']); unset($_COOKIE['cookie_time']); 

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

 setcookie("example_cookie", 'password', time()-3600, "/", $_SERVER['SERVER_NAME']);