Проверить существует ли куки php

Проверить существует ли куки php

БлогNot. PHP: проверить, включены ли в браузере клиента cookies

PHP: проверить, включены ли в браузере клиента cookies

Про сами cookies («куки») и их назначение писать ничего не буду, информации на эту тему куча, а вот вопрос из заголовка, конечно, не новый, но всегда актуальный.

В инете есть как разумные, но неполные, так и бредовые варианты. Давайте напишем небольшой сценарий testcookie.php , который постараемся сделать «универсальным».

Идея в том, что при первом входе на страницу посылается кука без указания срока хранения (временная) и кука, которой назначено жить 2 недели (постоянная). Две недели — это просто так, а вот две куки — потому что в некоторых браузерах можно сделать такую конфигурацию, что куки без даты (их ещё называют сеансовыми) принимаются, а с датой нет, ну или наоборот. Вот картинка выдачи теста из IE8:

Затем делается перезагрузка страницы с переданным ей же параметром step=1 . Это нужно потому, что вначале сервер направляет cookie клиенту как часть отклика HTTP, потом клиент, если он готов принять cookie, возвращает её серверу.

Читайте также:  Send java object socket

Следовательно, для проверки того, удался ли этот возврат, нужно ждать следующего запроса HTTP.

Чтобы отличить второй вход от первого, используется условие на наличие переменной $_GET[‘step’] .

 else < //Это повторный вызов? $temp_cookie = $_COOKIE['temp_cookie']=='ok'?'1':'0'; //Установилась временная кука? $persist_cookie = $_COOKIE['persist_cookie']=='ok'?'1':'0'; //А постоянная? setcookie ('temp_cookie','',time()-14*24*60*60); setcookie ('persist_cookie','',time()-14*24*60*60); //Надёжный способ удалить кукиз - поставить пустой и просроченный //. Теперь проверяем наличие временных и постоянных кукизов echo '
Cookie test:'; echo '
Temp cookies: '.$temp_cookie; echo '
Persist cookies: '.$persist_cookie; > ?>

На некоторых локалхостах это может не работать, где есть траблы с куками или отдельными настройками безопасности для локальных и внешних адресов, но на любом удалённом сервере работать должно.

А вот с точки зрения SEO может получиться полная фигня. Клиент или поисковый бот заходит по ссылке script.php?step=1 , скрипт проверяет наличие куки, и, видя, что её нет, решает, что куки отключены в браузере. Напрашивается идея сделать через переменную сессии, их-то, вроде бы, нигде не отключают? Как-то вот так:

 else < //Это повторный вызов? $temp_cookie = $_COOKIE['temp_cookie']=='ok'?'1':'0'; //Установилась временная кука? $persist_cookie = $_COOKIE['persist_cookie']=='ok'?'1':'0'; //А постоянная? setcookie ('temp_cookie','',time()-14*24*60*60); setcookie ('persist_cookie','',time()-14*24*60*60); unset($_SESSION['test_cookie']); session_destroy (); //Надёжный способ удалить кукиз - поставить пустой и просроченный //. Теперь проверяем наличие временных и постоянных кукизов echo '
Cookie test:'; echo '
Temp cookies: '.$temp_cookie; echo '
Persist cookies: '.$persist_cookie; > ?>

Увы, на самом деле, в ряде г****браузеров, не соблюдающих никаких стандартов, например, в той же «Опере» 11.50, отключение кукизов будет означать и отключение сессий. Так что в этом случае она выдаст что-нибудь вроде циклического редиректа.

А вот в IE8, к примеру, всё сработает корректно (настройки Cookie в нём находятся так: меню Сервис, Свойства обозревателя, вкладка Конфиденциальность, кнопка Дополнительно).

Массу способов можно придумать с применением Javascript, но он-то тоже может быть отключён.

В общем, если знаете способ надёжней и кроссбраузерней приведённого — пишите 🙂 А на практике, конечно, проще всего исходить из того, что 99% пользователей ничего про отключение кукизов не знают и никогда их не отключают.

Вот совсем короткий код для проверки того, включены ли в браузере cookie-файлы, проверенный в PHP 7.4.2 (XAMPP).

20.07.2011, 00:13 [14835 просмотров]

Источник

Файл cookie — это небольшой текстовый файл, который позволяет хранить небольшой объем данных (около 4 КБ) на компьютере пользователя. Каждый раз, когда тот же компьютер запрашивает страницу в браузере, он также отправляет файл cookie. Обычно они используются для отслеживания такой информации, как имя пользователя, которое сайт может получить для персонализации страницы, когда пользователь посетит сайт в следующий раз. С помощью PHP вы можете как создавать, так и получать значения файлов cookie.

Файл cookie создается с помощью функции setcookie() .

Синтаксис

Обязательный параметр — это только параметр name . Все остальные параметры необязательны.

Параметры функции setcookie():

  • name — устанавливает имя файла cookie и сохраняется в переменной среды HTTP_COOKIE_VARS . Эта переменная используется для доступа к файлам cookie
  • value — используется для установки значения cookie
  • expire — срок действия, после которого cookie уничтожаются. Если этот параметр не установлен, то срок действия cookie автоматически истечет при закрытии веб-браузера.
  • path — путь к каталогу на сервере, для которого будут доступны cookie. Если задать ‘/’, cookie будут доступны для всего сайта. Если задать, например, ‘/mykatalog/’ , cookie будут доступны только из каталога /mykatalog/’ и всех его подкаталогов. По умолчанию значением является текущий каталог, в котором устанавливаются cookie.
  • domain — задает домен, для которого будут доступны cookie. Если это домен второго уровня, например, hostname.com, то cookie доступны для всего сайта hostname.com, в том числе и для его поддоменов типа blog.hostname.com. Если задан поддомен blog.hostname.com, то cookie доступны только внутри этого поддомена.
  • secure — может быть установлено значение 1 , чтобы указать, что файл cookie должен отправляться только путем безопасной передачи с использованием HTTPS, в противном случае установлено значение 0 , означает, что cookie может быть отправлен по обычному протоколу HTTP.
  • httponly — если равно true , cookie будут доступны только через http протокол. То есть cookie в этом случае не будут доступны скриптовым языкам, например, JavaScript. По умолчанию параметр равен false

В следующем примере создадим файл cookie с именем «user» и значением «Max Maximov». Срок действия cookie истечет через 7 дней (86400 * 7). Параметр / означает, что файл cookie доступен на всех страницах веб-сайта.

С помощью PHP-скрипта получаем значение файла cookie «user», используя глобальную переменную $_COOKIE . Чтобы узнать, установлен ли cookie мы используем функцию isset() :

Пример

    else < echo "Куки '" . $cookie_name . "' установлен!
"; echo "Значение: " . $_COOKIE[$cookie_name]; > ?>

Примечание: Функция setcookie() должна быть объявлена ПЕРЕД тегом .

Значение файла cookie автоматически кодируется URL-адресом при его отправке и автоматически декодируется при получении. Для предотвращения URL-кодирования используйте функцию setrawcookie() .

Если Вы хотите изменить значение cookie на новое, вы можете просто переписать его значение. Таким образом, даже если браузер уже посылал значение cookie серверу на одной из предыдущих страниц, вполне возможно сообщить серверу, что в действительности значение теперь другое.

В следующем примере изменим значение файла cookie «user», просто установив его снова с помощью функции setcookie() :

Пример

    else < echo "Куки '" . $cookie_name . "' установлен!
"; echo "Значение: " . $_COOKIE[$cookie_name]; > ?>

Мы может установить массив favorits , используя квадратные скобки в именах favorits[] , а затем прочитать массив favorits и значения этого массива:

Пример

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

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

Пример

Для проверки существования cookie сначала создадим файл cookie new_cookie со значением new_test . Затем просто c помощью функции count() подсчитаем количество элементов массива $_COOKIE :

Пример

Источник

PHP Cookie

Привет, друзья. Пришло время поговорить о том, что такое PHP cookie, как их установить, удалить, перезаписать и где они используются. Этот урок для начинающих и полных чайников в программировании, поэтому буду показывать на конкретных практических примерах. Итак, что же такое куки в PHP? Это один из способов хранения определенных данных на стороне клиента. Если говорить проще, то куки хранятся в браузере пользователя. Например при авторизации. Когда юзер отправляет данные, они сохраняются на устройстве. Теперь давайте ближе к делу или сразу к видео

Телеграм-канал serblog.ru

Как установить куки в PHP

Все не так сложно, как может показаться. Установка cookie происходит следующим образом:

Это базовые значения, которые обязательны для заполнения. Но параметров гораздо больше, а именно 7! Семь, Карл! И вот для чего каждый из них нужен.

1 Name Название (имя) cookie
2 Value Значение (как правило переменная)
3 Expires Время жизни куки
4 Path Путь для которого будут сохранены куки
5 Domain Можно указать поддомен (‘.domain.ru’)
6 Secure Использование только на HTTPS (true или false)
7 HttpOnly Использование только на HTTP (true или false)

В подавляющем большинстве случаев используются первые 3 параметра чтобы записать cookie в PHP. То есть имя, значение и время жизни. Этого вполне достаточно для полноценной работы. Давайте к практике.

Здесь я установил cookie name со значением — 5, которая удалится через 1 минуту.

В этом нам поможет глобальный массив COOKIE. Чтобы получить значение куки нам нужно вызвать ее по имени.

Как вы уже догадались, на экран выведется пятерка. Теперь сделаем проверку. Если данная кука была установлена, то выедем одно сообщение, если не была, то другое.

if(isset($_COOKIE['name'])){ echo 'Куки успешно установлены!'; }else{ echo 'Куки НЕ установлены!'; }

Есть один маленький нюанс. При первом заходе на страницу будет выведено сообщение, что куки не установлены, однако, если заглянуть в консоль браузера, то увидим, что она там есть. В чем же дело? Элементарно. Дело в том, что запрос на проверку и сама установка куки идут ОДНОВРЕМЕННО. Поэтому сообщение об успешной установке мы увидим только после следующей перезагрузке страницы.

Теперь у нас есть условие и его можно использовать в некоторых случаях.

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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
div class="container"> div class="row"> div class="col-md-12">  ?=$head ?>  ?=$head_two ?> div> div> div class="row"> div class="col-md-12"> div class="col">  ?=$val1_c ?>div> div class="col"> ?=$val1_c ?>div> div> div> div class="row"> div class="col-md-4 col-sm-12">  ?=$form?>  ?=$form2?> div> div> div>

Теперь осталось в HTML вставить нужные переменные.

$count = 0; if (isset($_COOKIE['count'])) { $count = $_COOKIE['count']; $count++; } setcookie('count', $count);

недавно я публиковал материал на тему создания счетчика просмотров страниц. Но там он считает общее количество просмотров всеми посетителями. Здесь же мы сделаем некую индивидуальность и покажем сколько раз каждый их юзеров был на этой странице. Благо делается он очень просто. Вот его код:

setcookie('name', ''); setcookie('name', '$value', time()-86400);

setcookie(‘name’, »); setcookie(‘name’, ‘$value’, time()-86400);

Потом просто выводим на странице переменную count. Протестировать и посмотреть пример работы PHP cookie можно на этой странице:

Если не указан третий параметр (Expires), то куки будут храниться до окончания сессии, то есть пока вы не закроете браузер. Но можно выставить и другие временные рамки, к примеру на 1 час или на 1 день и т. д. Вот некоторые примеры:

  • time()+3600 — один час
  • time()+86400 — один день
  • time()+86400 * 30 — 30 дней
  • time()+86400 * 30 * 12 — 1 год

Этого вполне достаточно, но многие интересуются, как сделать так, чтобы куки жили вечно или сделать время жизни бесконечным. Не очень понимаю в каких случаях это может понадобиться, однако ответ на этот вопрос будет — НЕТ, нельзя. Но можно поставить максимальное время. Пишется так: 0x7FFFFFFF — дата 19.01.2038 года.

Как удалить или очистить (unset) куки в PHP

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

setcookie('name', ''); setcookie('name', '$value', time()-86400);

setcookie(‘name’, »); setcookie(‘name’, ‘$value’, time()-86400);

Надеюсь это руководство было максимально понятным и исчерпывающим. Если вам есть что добавить по этой теме или у вас не работают cookie в PHP, то напишите об этом в комментариях, будем разбираться вместе. Так же можете скачать пример из этой статьи и попрактиковаться самостоятельно.

Источник

Оцените статью