Как удалить куки
Когда я хочу удалить файл cookie, я пытаюсь выполнить следующее:
unset($_COOKIE[‘hello’]);
В браузере Firefox я вижу, что файл cookie все еще существует. Как я могу удалить cookie?
Ответ 1
Вы можете попробовать это:
if (isset($_COOKIE[‘remember_user’]))
unset($_COOKIE[‘remember_user’]);
setcookie(‘remember_user’, null, -1, ‘/’);
return true;
> else
return false;
>
Или установите значение «» и дату истечения срока действия cookie на вчерашний день (или любую дату в прошлом).
setcookie(«hello», «», time()-3600);
Тогда срок действия cookie истечет при следующей загрузке страницы.
Ответ 2
Для надежного удаления файла cookie недостаточно установить для него срок действия в любое время в прошлом, рассчитанный вашим сервером PHP. Это связано с тем, что клиентские компьютеры могут и часто имеют время, отличное от времени вашего сервера.
Лучшая практика — перезаписать текущий файл cookie пустым файлом cookie, срок действия которого истекает через одну секунду в будущем после эпохи (1 января 1970 г., 00:00:00 UTC), следующим образом:
setcookie(«hello», «», 1);
Ответ 3
У меня была такая же проблема в моем коде, и я обнаружил, что это проблема пути 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’]);
Надеюсь, это поможет.
Ответ 4
Вот как работает код PHP v7 setcookie(), когда вы запускаете это:
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 в заголовках.
Ответ 5
Если вы хотите полностью удалить cookie со всего вашего текущего домена, следующий код определенно вам поможет :
unset($_COOKIE[‘hello’]);
setcookie(«hello», «», time() — 300,»/»);
Этот код полностью удалит переменную cookie со всего вашего домена, т. е. «/» — это означает, что значение переменной cookie установлено для всего домена, а не только для текущего домена или пути. time() — 300 означает, что он устанавливает предыдущее время, поэтому срок его действия истечет.
Вот так он отлично удаляется.
Ответ 6
В предыдущем ответе я увидел небольшую ошибку в решении. Я согласен, что лучшим решением, вероятно, будет это:
if (isset($_COOKIE[‘remember_user’]))
unset($_COOKIE[‘Hello’]);
unset($_COOKIE[‘HelloTest1’]);
setcookie(‘Hello’, null, -1, ‘/’);
setcookie(‘HelloTest1’, null, -1, ‘/’);
return true;
> else
return false;
>
Но так вы удаляете куки в каждом случае, когда функция unset работает, и тут же создаете новые куки с истекшим сроком действия в случае, когда функция 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;
>
Ответ 7
$cookie_name = «my cookie»;
$cookie_value = «my value»;
$cookie_new_value = «my new value»;
// Создание cookie,
setcookie($cookie_name, $cookie_value , time() + (86400 * 30), «/»); //86400 = 24 hours in seconds
// Получение значения cookie,
$cookie_value = $_COOKIE[$cookie_name];
// Обновление cookie,
setcookie($cookie_name, $cookie_new_value , time() + (86400 * 30), «/»);
// Удаление cookie,
setcookie($cookie_name, » , time() — 3600, «/»); // time() — 3600 означает установку даты истечения срока действия cookie на последний час.
Ответ 8
Вы должны удалить куки с помощью php на вашем сервере, а также с помощью js для вашего браузера. ( о ни создаются с помощью php, но файлы cookie также находятся в клиенте браузера):
Пример:
if ($_GET[‘action’] == ‘exit’)
// удаляем куки с помощью js, а затем на сервере с помощью php:
echo ‘
var delete_cookie = function(name)
document.cookie = name + «=;expires=Thu, 01 Jan 1970 00:00:01 GMT;»;
>;
delete_cookie(«madw»);
delete_cookie(«usdw»);
‘;
unset($_COOKIE[‘cookie_name’]);
unset($_COOKIE[‘cookie_time’]);
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Cookie в PHP. Как установить, изменить, удалить cookie
Cookie позволяют сохранять информацию на сайте, которую необходимо запомнить на определенное время и при последующей загрузки сайта, чтобы она выводилась автоматически.
Зачем вообще нужны cookie в PHP? На самом деле, их используют почти во всех движках, веб программах и проектах. Например, с их помощью можно хранить пароли, данные о пользователе, узнавать авторизован ли он, голосавал ли в опросе, с какого города зашел и т.д.
Разберемся с тем как установить cookie на сайте
Перед их установкой надо убедиться, что до вызова cookie нет никаких DOM элементов, т.е. шапка headers вашего сайта/страницы пуста. Если в процессе работы с куками у вас выйдет ошибка Cannot modify header information — headers already sent by — значит, до установки куков у вас выводится html содержимое, например, пробел, тег и т.п. Для проверки работоспособности куков создайте пустой php файл и впишите в него:
setcookie («cookie1», ‘Значение’);
echo $_COOKIE[«cookie1»];
?>
Запустите на своем сервере этот пример, после второго обновления страницы, у вас будет выводиться ‘Значение’. Теперь добавьте перед
Теперь о синтаксисе куков. Они задаются следующим образом:
setcookie (string name [, string value [, int expire [, string path [, string domain [, int secure]]]]])
Из него видно, что для задания кука обязателен только первый параметр name — имя кука. Рассмотрим остальные необязательные параметры.
- value — значение сookie.
- expires — время действия сookie. Если не установлено, то сookie удалится после закрытия пользователем браузера.
- path — директория, где может работать сookie. По умолчанию — без ограничений.
- domain — домен, где сookie будет работать, по умолчанию — текущий.
- secure — если нужно, чтобы сookie работал только по SSL соединению.
Примеры установки куков:
setcookie(«cookie2», ‘Значение’); //обычный кук
setcookie(«cookie3», ‘Значение’,time()+3600); // период действия: 1 час
setcookie(«cookie4», ‘Значение’,time()+3600*24*2); // период действия: 2 дня
Пример вывода кука:
echo $_COOKIE[«cookie2»]; //т.е. пишем имя кука и его значение сразу выведится
Пример проверки, существует ли кук
if(isset($_COOKIE[‘cookie2’]))
Пример условия кука
if($_COOKIE[‘cookie2’] == ‘Значение’)
Пример удаления кука
SetCookie(«cookie2″,»»); //для этого значение кука нужно обнулить
Теперь вы знаете, как работать с cookie. Используйте их разумно.
Cookies. Примеры работы с куками в PHP
C самого начала поста я предположу, что вы уже знаете что такое куки и для чего их можно использовать. И собственно пост рассчитан как раз на тех людей, которые хотят узнать ответ на вопрос «КАК?» — то есть задействовать куки на своём сайте.
Установка куков, простой пример
Чтобы установить куки, вам как минимум нужно задать название, содержание и количество времени, которое эта кука будет существовать.
$name = 'Миша'; setcookie('my_name',$name,time() + (86400 * 5)); // 86400 = 1 день в секундах
Например тут мы установили куки my_name со значением Миша и в качестве периода её существования задали 5 дней в UNIX-формате времени. time() — текущее время + 86400 * 5 — 5 дней в секундах.
Получение куков через PHP
Теперь, когда куки установлены, давайте попробуем вывести их на сайте (если конечно уже не прошло 5 дней :), для этого мы просто воспользуемся массивом $_COOKIE , который кстати можно просто целиком поглядеть через функцию print_r() , но мы пойдём более правильным путём, проверим ещё, что куки существует.
echo 'Привет, '. ( $_COOKIE['my_name'] != '' ? $_COOKIE['my_name'] : 'Гость') . '!'; // Привет, Миша!
То, что вы видите в круглых скобках, это обычное условие if-else , только в сокращенном виде, в полном виде оно бы выглядело вот так:
if( $_COOKIE['my_name'] != '' ) echo 'Привет, ' . $_COOKIE['my_name'] . '!'; else echo 'Привет, Гость!';
Всё очень просто, верно же?
Функция setcookie() на самом деле имеет и несколько других параметров и пример можно усложнить, включив в неё директорию, домен, защиту и использование только по HTTP. Сейчас объясню.
setcookie('my_name', $name, time() + (86400* 5), '/~mycookie/','truemisha.ru',true,true);
По сути куки та же самая, но мы также назначили её к директории «~mycookie» для домена «truemisha.ru», следующим параметров, равным true разрешили использовать только в SSL-подключении и в следующем параметре, тоже равным true , запретили для использования в JavaScript.
Также имейте ввиду несколько вещей:
- Несмотря на то, что мы ставим срок истечения действия куков, они могут быть удалены пользователем в любое время.
- Пользователь может вообще выключить куки в браузере.
- Куки ни при каких условиях не получится использовать между разными доменами.
Удаление куков
Тут есть несколько моментов.
Первый — если вы установите время истечения куки равным 0, то она будет удалена по истечении сессии в браузера (после закрытия)
Чтобы удалить куку немедленно, вам нужно установить ей пустое значение или срок истечения в прошедшем времени, например:
setcookie ( 'my_name', '', time()-5 );
Миша
Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.
Пишите, если нужна помощь с сайтом или разработка с нуля.
11. Что такое куки (COOKIE) и как с ними работать в PHP
В этой статье я расскажу вам о том, что такое Cookie (в переводе с английского — печенье, к слову об изображении), как их используют, насколько они важны в современном Рунете и как с ними работать средствами PHP.
Теперь немного сухой, но обязательной информации, которая после будет объяснена на примерах)
Cookie — это набор данных (сохраняемый как текстовый файл), который создаётся web-сервером и который отсылается при каждом обращении к серверу. Cookie хранятся в браузере пользователя и составляются для определённого сайта.
Куки, как правило, используют для хранения технических данных пользователя (кэш уникального id для автоматического входа на сайт, личные настройки и статистики), интернет-ресурсу (что смотрел, что нажимал) и общим данным по предпочтениям (например любит сайты, посвящённые автомобилям, а значит ему можно показывать соответствующую рекламу на других сайтах — обращали внимание на такое? Это cookie). Куку удаляют в основном двумя способами: средствами PHP и самостоятельной чисткой пользователя кук своего браузера.
Примеры записи cookie на PHP
Первое и самое главное — запись куки в браузер. Ниже приведены примеры записи, продления, сокращения на PHP.
Для записи, продления, сокращения срока действия куки используется setcookie.
// создаём куку
setcookie("Name", "Value",time()+3600); // создали cookie с названием Name, значением Value на 1 час (3600 секунд)
// сокращаем срок действия
setcookie ("Name", "", time() - 3600); // срок действия куки сокращён на час
?>
Как проверить, записалось ли значение для cookie?
setcookie("Name", "Value",time()+3600); // создаём куку
if (SetCookie("Test","Value")) echo "Cookies успешно установлены!
";
// при следующем запросе выведет 'Value':
echo @$_COOKIE['Test']; // выводим куку. Напоминаю, знак @ не выводить ошибку в случае отсутствия куки
?>
В последнем примере при выводе куки мы используем специальный для этого массив $_COOKIE.
Как удалить Cookie в PHP?
Для удаления куки используется также setcookie или unset.
unset($_COOKIE["Name"]); // первый способ удалить куку
setcookie("Name","Value",time()-1); // второй способ - возьмём и просрочим действие куки
setCookie("Name",""); // третий способ - оставляем значение пустым
?>
Пишем первый скрипт с использованием Cookie на PHP — форма авторизации
И давайте сейчас с Вами решим такую задачу: если пользователь авторизован на сайте, то поздороваться с ним, иначе вывести форму входа. Причём, если данные, введённые в форму, неправильные, то вывести соответствующее предупреждение. Реализация выглядит следующим образом:
// вывод формы для ввода данных";
// после нажатия "Войти" страница обновляется
function showForm() $string = "
return $string;
>
// проверка введённых пользователем данных. Если верно, то возвращает true
function check($login, $pass) if (($login == "admin") && ($pass == md5("12345"))) return true;
else return false;
>
// теперь запись
if (isset($_POST['log'])) $login = $_POST['login'];
$pass = md5($_POST['pass']);
if (check($login, $pass)) setcookie("login", $login);
setcookie("pass", $pass);
>
else echo "Вы ввели неверные данные. Пожалуйста, попробуйте ещё";
>
?>
setcookie("login", $login);
setcookie("pass", $pass);
// ниже дубль предыдущего кода, который позволяет реализовать сценарий в рамках одной страницы
$login = $_COOKIE['login'];
$pass = $_COOKIE['pass'];
if (check($login, $pass)) echo "Здравствуйте, $login";
else echo showForm();
?>
Смотрим результат работы. После демонстрации обязательно прочитайте описание работы кода.
Код и его логика простые. В верхней части мы создали функции-обработчики: вывод формы для входа, проверка соответствия данных (если успех, то возвращает true, если данные не совпадают, то — false):
![]() |
В качестве логина — admin, пароля — 12345 |
После этого производим запись куки.
Обратите внимание на $_SERVER[SCRIPT_NAME] (можно заменить на $_SERVER[REQUEST_URI]). Эта константа содержит путь к текущему файлу. В результате обработки формы (значение атрибута action) обращается по этому же пути, к этому файлу.
Следом идёт проверка отправки формы (передавались ли значение log, то есть нажимали ли кнопку Войти). Если да, то проверяются данные login и pass. Стоит обратить внимание, что пароль не передаётся в чистом виде, а зашифровывается встроенной в PHP функцией шифрования данных md5().
![]() |
Пароли шифруются затем, чтобы злоумышленник не смог посмотреть куки вашего браузера и увидеть их в исходном виде. Существуют функции Java Script ( что такое JS? ), которые позволяют беспрепятственно посмотреть ваши куки. В зашифрованном виде они не будут представлять особого интереса. |
Сравнение пароля в данном скрипте происходит по модели шифруем(пароль из формы) совпадает ли с шифруем(пароль по умолчанию). Если проверка прошла успешно, то получаем true и далее происходит запись в cookie. Если нет, то выводится сообщение — Вы ввели неверные данные. Пожалуйста, попробуйте ещё. И вновь выводим форму авторизации с HTML-тегами.