- Работа с cookie в PHP
- Работа с cookie на PHP
- Учебник PHP
- Практика
- Важное
- Регулярки
- Работа с htaccess
- Файлы, папки
- Сессии и куки
- Работа с БД
- Практика по работе с БД в PHP
- Практика
- Движок PHP
- Продвинутые БД
- Аутентификация
- Практика
- ООП и MVC
- Абстрактные классы и интерфейсы
- Трейты
- ООП Магия
- Практика
- Практика: классы как набор методов
- Пишем в cookie
- Читаем из cookie
- Удаляем cookie
- Что вам делать дальше:
- PHP Cookie — практические примеры использования
- Как установить куки в PHP
- Как получить, прочитать, проверить cookie в PHP
- Авторизация с использованием PHP Cookie
- Учимся работать с cookie в PHP
- Для чего нужны cookie
- Откуда берутся cookie
- Про время жизни
- Как работать с cookie в PHP
- Что еще нужно знать про cookie
- Установка нескольких cookie
- Удаление cookie-файлов
Работа с cookie в PHP
Cookie — это набор данных, который создаётся Web-сервером и который отсылается при каждом обращении к серверу. Cookie хранятся в браузере пользователя. Как правило, cookie используется для: сохранения различных настроек, уникальных для пользователя, аутентификации пользователя, различной статистики и других подобных вещей. И о работе с cookie в PHP мы и поговорим в этой статье.
Начнём с простейших вещей: с записи cookie в браузер пользователя. Для этого существует функция setcookie():
После запуска скрипта, Вы сможете посмотреть cookie. Посмотреть их можно следующим образом: либо поискать в настройках браузера, либо поискать прямо на жёстком диске, где хранятся cookie Вашего браузера, либо (самый простой способ) ввести в адресной строке: «javascript:document.cookie«. Только вводите в той же вкладке, в которой Вы запускали скрипт, потому что браузеры отделяют cookie одного сайта от другого.
Теперь встаёт вопрос: «Как вывести cookie?«. Выводятся они с помощью массива $_COOKIE:
В результате, Вы увидите «Value«. Как видите всё элементарно.
И давайте сейчас с Вами решим такую задачу: если пользователь авторизован на сайте, то поздороваться с ним, иначе вывести форму входа. Причём, если данные, введённые в форму, неправильные, то вывести соответствующее предупреждение. Реализация выглядит следующим образом:
Источник
Работа с cookie на PHP
Учебник PHP
Практика
Важное
Регулярки
Работа с htaccess
Файлы, папки
Сессии и куки
Работа с БД
Практика по работе с БД в PHP
Перед чтением см. новые уроки раздела «Важное», которые появились выше.
Практика
Движок PHP
Продвинутые БД
Аутентификация
Практика
ООП и MVC
Абстрактные классы и интерфейсы
Трейты
ООП Магия
Практика
Практика: классы как набор методов
- Урок №
новая вкладка с new.code.mu
. текст, код Практика: класс ArrayConvertor - Урок №
новая вкладка с new.code.mu
. текст, код Практика: класс TagHelper - Урок №
новая вкладка с new.code.mu
. текст, код Практика: класс FormHelper - Урок №
новая вкладка с new.code.mu
. текст, код Практика: класс TableHelper - Урок №
новая вкладка с new.code.mu
. текст, код Практика: класс SessionShell - Урок №
новая вкладка с new.code.mu
. текст, код Практика: класс CookieShell - Урок №
новая вкладка с new.code.mu
. текст, код Практика: класс FileManipulator - Урок №
новая вкладка с new.code.mu
. текст, код Практика: класс databaseShell TODO cart корзина flash шаблонизатор роутер контроллер кеш логи фалидатор
Cookie (куки) — это способ долговременного хранения данных в браузере пользователя.
К сожалению, в куки можно сохранить только 4 килобайта информации. Кроме того, есть ограничение на количество кук для данного домена.
Пишем в cookie
Обращаю ваше внимание на то, что в куки нужно писать до любого вывода на экран. Замечания по этому поводу аналогичны проблемам с сессиями на PHP.
Написать что-то в куки можно с помощью функции setcookie, которая первым параметром принимает имя этой куки, а вторым — значение:
Однако такие куки долго не живут — только до закрытия браузера.
Продлить время жизни куки можно с помощью третьего параметра, который принимает время (конкретную дату) окончания жизни куки в формате timestamp.
Для тех, кто не помнит, что это за формат — напоминаю: это количество секунд, прошедших с первого января 1970 года.
Однако устанавливать конкретную дату ‘смерти’ куки не очень удобно, так как дата установки этой куки всегда разная.
Поэтому третий параметр принято записывать так: настоящий момент времени + N секунд.
Настоящий момент времени в формате timestamp можно получить с помощью функции time. Примеры:
Читаем из cookie
Куки можно прочитать с помощью глобального массива $_COOKIE.
Давайте прочитаем ранее установленную куку test:
Удаляем cookie
Удаляют куки очень хитрым способом — устанавливая дату ‘смерти’ куки на текущий момент времени:
Что вам делать дальше:
Приступайте к решению задач по следующей ссылке: задачи к уроку.
Когда все решите — переходите к изучению новой темы.
Источник
PHP Cookie — практические примеры использования
Привет, друзья. Пришло время поговорить о том, что такое PHP cookie, как их установить, удалить, перезаписать и где они используются. Этот урок для начинающих и полных чайников в программировании, поэтому буду показывать на конкретных практических примерах. Итак, что же такое куки в PHP? Это один из способов хранения определенных данных на стороне клиента. Если говорить проще, то куки хранятся в браузере пользователя. Например при авторизации. Когда юзер отправляет данные, они сохраняются на устройстве. Теперь давайте ближе к делу или сразу к видео
Как установить куки в 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. То есть имя, значение и время жизни. Этого вполне достаточно для полноценной работы. Давайте к практике.
setcookie(‘name’, 5, time()+60)
Здесь я установил cookie name со значением — 5, которая удалится через 1 минуту.
Как получить, прочитать, проверить cookie в PHP
В этом нам поможет глобальный массив COOKIE. Чтобы получить значение куки нам нужно вызвать ее по имени.
Как вы уже догадались, на экран выведется пятерка. Теперь сделаем проверку. Если данная кука была установлена, то выедем одно сообщение, если не была, то другое.
Есть один маленький нюанс. При первом заходе на страницу будет выведено сообщение, что куки не установлены, однако, если заглянуть в консоль браузера, то увидим, что она там есть. В чем же дело? Элементарно. Дело в том, что запрос на проверку и сама установка куки идут ОДНОВРЕМЕННО. Поэтому сообщение об успешной установке мы увидим только после следующей перезагрузке страницы.
Теперь у нас есть условие и его можно использовать в некоторых случаях.
Авторизация с использованием PHP Cookie
Для примера я создам 2 формы. Первая с одним единственным полем, в которое будем писать свое имя. Пока не будет введено и отправлено имя, пользователю будут недоступны некоторые элементы страницы. То есть, если он не авторизован, то какие-то функции сайта от него будут скрыты, а так же показано приветствие. После того, как данные с формы будут отправлены, эта форма будет скрыта и показана другая, которая просто будет запоминать все данные, введенные пользователем.
Источник
Учимся работать с cookie в PHP
В сегодняшнем уроке мы поговорим о работе с cookie в PHP. Начнём с того, что же это такое, для чего это нужно и почему оно вообще появилось.
Как мы с вами уже знаем, в PHP мы можем работать с GET- и POST-запросами. Они позволяют нам передавать серверу данные, чтобы как-то повлиять на работу кода. Мы можем передать скрипту логин и пароль, он их проверит и разрешит нам доступ к какой-либо информации. Однако, это не позволит создать сессию между нами и сервером. То есть сервер не может нас «запомнить», и каждый раз, как мы хотим сказать что это мы, придется отправлять отдельный новый запрос с логином и паролем.
Для чего нужны cookie
В качестве решения придумали cookie. Это такие записи с типом ключ-значение, типа массива в PHP, только хранятся они в браузере у пользователя сайта. Для каждого сайта cookie хранятся отдельно. Каждый раз, когда пользователь обращается с запросом на сайт, браузер проверяет наличие этих записей для данного сайта. И если они имеются, то он отправляет их в заголовке каждого запроса к этому сайту.
Откуда берутся cookie
Cookie создаются в браузере по «просьбе» сервера. В какой-то момент мы решаем, что нужно в браузере посетителя создать cookie с каким-то значением. Для этого нужно чтобы сервер передал в ответе клиенту специальный заголовок, в котором указано, какую запись нужно создать в браузере для данного сайта.
Всё это происходит в фоне и не заметно для пользователя. По этому принципу работает авторизация на любом сайте. В простейшем случае, после того как вы ввели логин и пароль на сайте, сервер проверяет, верны ли они. И если да, то сервер может попросить браузер сохранить эти данные в cookie и при каждом запросе отправлять их ему.
То есть сервер примерно говорит: «Эй, браузер, создай запись для меня с ключом “login” и значением “admin”, и ещё одну с ключом “password” и значением “123”». После этого браузер при любом запросе к серверу начинает отправлять дополнительные данные типа:
После этого в других местах сайта, где нужна авторизация, теперь можно будет проверить эти данные из cookie, не заставляя пользователя заполнять форму заново. И если они являются верными логином и паролем, то давать пользователю доступ к чему-либо.
То есть, например, на странице с формой авторизации при верном логине и пароле будем устанавливать cookie, а на остальных страницах уже проверять данные из cookie, переданные клиентом.
Про время жизни
При этом у cookie есть TTL (Time To Live – время жизни). То есть эти записи могут быть временными. Это время жизни так же указывается сервером во время установки cookie в браузер. Благодаря этому можно сделать так, чтобы сессия длилась пол часа. А после этого времени пользователю надо будет авторизоваться снова. Наверняка вы замечали это в действии на многих сайтах.
Как работать с cookie в PHP
Итак, мы в общих чертах разобрались с тем, как работают cookie. Давайте теперь посмотрим, как с ними можно работать в языке PHP.
Давайте создадим в нашем проекте файл с именем viewCookies.php. Поместим в него следующий код.
Как вы уже должны были догадаться, $_COOKIE — это еще один глобальный массив в PHP, аналогично массивам $_GET и $_POST. Только в нём хранятся все cookie, которые были отправлены браузером в рамках текущего запроса.
Давайте посмотрим на работу данного скрипта, открыв в браузере страницу: http://myproject.loc/viewCookies.php
Как мы видим, в данный момент этот массив пуст. Давайте же его наполним 🙂 Для этого нам нужно установить какую-нибудь cookie в браузер. В PHP для этого используется функция setcookie($name, $value, $ttl, $path)
Параметры функции setcookie()
| Имя параметра | Предполагаемый тип | Значение |
|---|---|---|
| name | string | Имя cookie-файла (аналогичное имени переменной) |
| value | string | Значение, которое должно быть сохранено в cookie-файле (аналогично значению, которое должно было быть присвоено переменной). Если этот параметр не задан, то cookie-файл, указанный в качестве первого параметра, удаляется |
| expire | int | Значение, определяющее, когда должен истечь срок существования данного cookie-файла. Значение 0 (применяемое по умолчанию) указывает, что cookie-файл должен существовать до закрытия программы браузера. Любое другое целое число интерпретируется как абсолютное значение времени в секундах, когда cookie-файл должен стать недействительным |
| path | string | Путь в адресной строке. Если задать ‘/’, cookie будут доступны из всех директорий сайта. Например, и в http://myproject.loc/ и в http://myproject.loc/posts/. Если задать ‘/posts/’, cookie будут доступны только из директории http://myproject.loc/posts/ и всех ее поддиректорий (например, http://myproject.loc/posts/new/). По умолчанию значением является текущая директория, в которой cookie устанавливается. Если мы хотим, чтобы cookie была доступна на всём сайте, то нужно устанавливать это значение в ‘/’. В обозначении пути должна обязательно присутствовать заключительная косая черта |
| httponly | bool | Cookie-файлы, заданные с этим флагом, передаются только с помощью запросов протокола HTTP. Значением по умолчанию является FALSE |
| domain | string | В случае, предусматриваемом по умолчанию, проверка домена, доступа к которому требует клиент, не производится. Если же данный параметр не пуст, то имя домена должно совпадать с ним. Например, если один и тот же сервер обслуживает домены www.mysite.com и forum.mysite.com, то в коде одного сайта можно обеспечить, чтобы на другом сайте не считывались (и не устанавливались) его cookie-файлы, присвоив параметру domain значение ‘forum.mysite.com’. |
| secure | bool | Значением по умолчанию является 0 (false). Если этот параметр равен 1, или true, то cookie-файл будет передаваться только через соединение с защищенным сокетом (иначе говоря, по протоколу SSL или HTTPS). Обратите внимание на то, что установка такого cookie-файла возможна только при условии, что защищенное соединение уже открыто |
Есть еще несколько параметров, о них вы можете прочитать в официальной документации.
А теперь давайте попробуем эту функцию в деле. Создадим файл setCookies.php и запишем в него следующий код:
После этого перейдём по адресу http://myproject.loc/setCookies.php, где увидим пустую страницу. Как мы уже говорили, работа с cookie не видна пользователю.
Однако, эту работу всегда можно увидеть в консоли разработчика Google Chrome. Давайте откроем её (нажатием F12), перейдём во вкладку Network, обновим страницу в браузере и найдём её в списке загруженных данных (она там одна).
Нажмем на эту запись и в открывшемся справа окне выберем вкладку Headers. Здесь, в секции Response Headers мы можем видеть заголовок Set-Cookie с указанными нами данными.
Таким образом, cookie были успешно установлены в браузере. Давайте теперь перейдём на нашу страничку, выводящую массив $_COOKIE — http://myproject.loc/viewCookies.php
Как мы видим, теперь на сервер передаются cookie, ранее установленные в браузере. Увидеть их можно и в запросе, посмотрев в консоли разработчика секцию Request Headers.
Если вам нужно посмотреть все cookie, которые имеются в браузере для данного сайта — можно посмотреть их в той же консоли разработчика Google Chrome. Для этого перейдем во вкладку Application, выберем в левом списке пункт Cookies, а внутри него наш сайт.
Все cookie будут представлены в виде удобного списка.
Обратите внимание, что тут же их можно и отредактировать! То есть пользователь нашего сайта в любой момент может сделать себе абсолютно любые куки. Поэтому не стоит считать, что куки пришедшие в запросе это всегда значения, заданные нашим сервером. Всегда стоит проверять их на валидность, так же как и данным, пришедшим в POST- и GET-запросах
Что еще нужно знать про cookie
И в заключение данного урока нужно добавить, что cookie устанавливаются с помощью заголовка в ответе сервера по протоколу HTTP. Протокол HTTP устроен таким образом, что заголовок должен всегда идти перед данными, и никак иначе. Таким образом, функция setcookie и любые другие функции в PHP, изменяющие заголовок в HTTP-ответе, должны вызываться до любого вывода данных.
Можно сначала задать cookie, а затем вывести текст.
Всё прекрасно отработает.
Но нельзя вывести текст (являющийся телом HTTP-ответа), а затем пытаться установить cookie.
Как мы видим, это приведет к ошибке. Так устроен протокол HTTP. Сначала — заголовок, затем — тело. Только так и никак иначе.
Установка нескольких cookie
Нет ничего проще, чем установить несколько cookie. Для этого нужно просто несколько раз вызвать функцию setcookie.
Они успешно будут переданы клиенту.
Удаление cookie-файлов
Задача удаления cookie-файла решается просто. Достаточно вызвать функцию setcookie() точно с такими же параметрами, как и при установке cookie-файла, за исключением самого значения, которое должно быть задано в виде пустой строки. Такой вызов не приводит к тому, что устанавливается cookie-файл со значением, равным пустой строке, а фактически влечет за собой удаление cookie-файла. Следует учитывать, что, если при установке cookie-файла использовались параметры с указанием пути или домена, эти параметры необходимо также применять для отмены установки cookie-файла. Еще один метод удаления cookie-файлов состоит в том, чтобы задавать время истечения срока хранения в прошлом.
Пример полноценного взаимодействия с пользователем через cookie мы рассмотрим в следующем уроке. А пока — за домашку.
Источник