Как удалить куку php
Перейти к содержимому

Как удалить куку php

  • автор:

Как удалить куки

Когда я хочу удалить файл 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

12312312

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 = "
";
$string .= " ";
$string .= "";
$string .= "";
$string .= " ";
$string .= "";
$string .= "";
$string .= "";
$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-тегами.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *