Работа с файлами сессий и cookies в PHP и MYSQL. Учимся работать с cookie в PHP Cookie php примеры

Cookie - это набор данных, который создаётся Web-сервером и который отсылается при каждом обращении к серверу. Cookie хранятся в браузере пользователя. Как правило, cookie используется для: сохранения различных настроек, уникальных для пользователя, аутентификации пользователя, различной статистики и других подобных вещей. И о работе с cookie в PHP мы и поговорим в этой статье.

Начнём с простейших вещей: с записи cookie в браузер пользователя . Для этого существует функция setcookie() :

setcookie("Name", "Value");
?>

После запуска скрипта, Вы сможете посмотреть cookie . Посмотреть их можно следующим образом: либо поискать в настройках браузера, либо поискать прямо на жёстком диске, где хранятся cookie Вашего браузера, либо (самый простой способ) ввести в адресной строке: "javascript:document.cookie ". Только вводите в той же вкладке, в которой Вы запускали скрипт, потому что браузеры отделяют cookie одного сайта от другого.

Теперь встаёт вопрос: "Как вывести cookie? ". Выводятся они с помощью массива $_COOKIE :

echo $_COOKIE["Name"];
?>

В результате, Вы увидите "Value ". Как видите всё элементарно.

И давайте сейчас с Вами решим такую задачу: если пользователь авторизован на сайте, то поздороваться с ним, иначе вывести форму входа. Причём, если данные, введённые в форму, неправильные, то вывести соответствующее предупреждение. Реализация выглядит следующим образом:

function showForm() {
$string = "

";
$string .= "";
$string .= "";
$string .= "
";
$string .= "";
$string .= "";
$string .= "
";
$string .= "";
$string .= "
";
return $string;
}
function check($login, $pass) {
if (($login == "Admin") && ($pass == md5("123456"))) 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 "Неверные данные";
}
?>




$login = $_COOKIE["login"];
$pass = $_COOKIE["pass"];
if (check($login, $pass)) echo "Здравствуйте, $login";
else echo showForm();
?>

Код достаточно прозрачный, однако, данную статью могут читать и новички, поэтому давайте этот код разберём более подробно. Вначале мы пишем две функции: одна для вывода формы входа, а вторая функция возвращает true , если данные корректны (то есть, если логин - "Admin ", а пароль - "123456 "), иначе возвращает false . Обратите внимание на $_SERVER["SCRIPT_NAME"] . Данная константа содержит путь к текущему файлу. То есть мы хотим, чтобы обработчик формы (значение атрибута action ) был этот же файл.

Далее мы проверяем: была ли отправлена форма (существует ли переданное значение "log "). Если существует, значит, форма была отправлена и начинаем проверять полученные данные. Обратите внимание, что пароль мы пропускаем через функцию md5() , чтобы не хранить пароль в cookie в открытом виде. Используя функцию check() мы проверяем: верны ли данные. Если данные верны, то записываем их в cookie , иначе выводим строку: "Неверные данные ".

Далее мы начинаем выводить HTML-теги . Обратите внимание, что мы не можем использовать функцию setcookie() после того, как вывели что-то в браузер. То есть нельзя, например, вывести HTML-теги , а потом воспользоваться функцией setcookie() , иначе возникнет ошибка. И, поверьте, её очень многие новички допускают.

После вывода HTML-тегов мы приходим к моменту, когда надо проверять cookie . Мы считываем их, а затем проверяем. Если они верные, то здороваемся с пользователем, иначе выводим форму входа.

Вот и весь скрипт, как видите, разобраться можно. Однако, он имеет один изъян, связанный с тем, что мы выводим "Неверные данные " до тега " ". Поэтому домашнее задание: исправить эту ошибку, чтобы не было нарушения валидности HTML-кода . Сделать это очень просто, однако, будет крайне полезно, так как Вам придётся разобраться в этом коде, а, следовательно, разобраться с тем, как работать с cookie в PHP . А использовать cookie в PHP приходится очень часто, и я постараюсь в следующих статьях закрепить Ваши знания о них.

Файлы cookie - это небольшие текстовые файлы, которые создаёт браузер в специальной папке по команде PHP программы. Хотя cookie может создать и JavaScript, но в этой статье не об этом. Тут мы будем говорить только о установке cookie через PHP программу.

Файлы cookie содержать в себе информацию в виде пар имя=значение. Например, в cookie можно записать логин и пароль пользователя и хранить их на компьютере клиента, чтобы он в следующий раз не залогинивался заново. Конечно, хранение логина и пароля в cookie не самый безопасный способ, и эти данные лучше хранить используя сессии в PHP , но в качестве примера использования cookie этот случай подойдёт.

PHP программа даёт команду браузеру-клиенту установить cookie используя строку в заголовке ответа. То есть вы должны представлять, как работает интернет, что такое заголовок запроса и заголовок ответа, чтобы понять как работает установка cookie.

Итак, всю информацию о том, какие cookie должен установить браузер, PHP программа отправляет в заголовке ответа.

Установка cookie в PHP

Для установки cookie в языке PHP есть функция setcookie() , она и задает cookie, которое будет передано браузеру вместе с другими HTTP заголовками.

Все заголовки, которые создаёт ваш скрипт, должны быть отправлены до того, как ваш скрипт что-то выведет в окно браузера.

Вернёмся к нашей функции. Вот её синтаксис:

Bool setcookie (string имя, string значение, int время жизни, string путь, string домен, bool протокол, bool http only)

bool, string, int в этом синтаксисе ‐ это типы данных. То есть "bool setcookie() " обозначает то, что функций setcookie() возвращает значение булевого типа. Далее, первый и второй аргумент (имя и значение) должны быть типа строка (string), и так далее.

Сразу скажу, для начала вам понадобится только первые три параметра. На остальные можете пока не обращать внимания.

  • string имя - имя в паре имя=значение
  • string значение - значение в паре имя=значение
  • int время жизни - время хранения cookie, это метка времени Unix, т.е. желательно задавать это время с помощью функции time() , прибавляя время в секундах, через которое срок действия cookie должен истечь. Также можно воспользоваться функцией mktime() .
  • string путь - путь к директории на сервере, из которой будут доступны cookie.
  • string домен - домен, которому доступны cookie.
  • bool протокол - указывает на то, что значение cookie должно передаваться от клиента по защищенному HTTPS соединению. Если задано TRUE, cookie от клиента будет передано на сервер, только если установлено защищенное соединение. При передаче cookie от сервера клиенту следить за тем, чтобы cookie этого типа передавались по защищенному каналу, должен программист веб-сервера.
  • bool http only - если задано TRUE, cookie будут доступны только через HTTP протокол. То есть cookie в этом случае не будут доступны скриптовым языкам, вроде JavaScript. Эта возможность была предложена в качестве меры, эффективно снижающей количество краж личных данных посредством XSS атак (несмотря на то, что поддерживается не всеми броузерами). Стоит однако же отметить, что вокруг этой возможности часто возникают споры о ее эффективности и целесообразности. Аргумент добавлен в PHP 5.2.0. Может принимать значения TRUE или FALSE.

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

Вот пример установки cookie:

Этот пример только устанавливает cookie на компьютер клиента.

Получение cookie в PHP

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

В PHP-програннме можно определить, прислал браузер cookie или нет очень просто. Они доступны в массиве $_COOKIE .

Давайте усложним прошлый пример:

"; print_r($_COOKIE); echo "";

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

Хотя в массиве $_COOKIE уже может что-то быть, но тогда эти cookie ложит не наш пример.

Только обновив страницу второй раз вы увидите, что PHP программа получила пару $_COOKIE => welcome .

Обратите внимание, что cookie положены на одну минуту, а это значит что через минуту, если обновить страницу, приветствие опять будет отсутствовать.

Пожалуй вот и всё что касается получения доступа к информации из cookie в PHP.

Удаление cookie в PHP

Чтобы удалить cookie нужно просто поставить их срок жизни в прошедшем времени.

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

Пример работы cookie в PHP

Напишем примитивный счётчик просмотра страниц сайта посетителем, используя cookie.

Обратите внимание, что данные в этом примере живут 60 секунд, потом счётчик обнулится.

На этом тема работа с cookie в PHP раскрыта практически полностью.

В сегодняшнем уроке мы поговорим о работе с cookie в PHP. Начнём с того, что же это такое, для чего это нужно и почему оно вообще появилось.

Для чего нужны cookie

Как мы с вами уже знаем, в PHP мы можем работать с GET- и POST-запросами. Они позволяют нам передавать серверу данные, чтобы как-то повлиять на работу кода. Мы можем передать скрипту логин и пароль, он их проверит и разрешит нам доступ к какой-либо информации. Однако, это не позволит создать сессию между нами и сервером. То есть сервер не может нас «запомнить», и каждый раз, как мы хотим сказать что это мы, придется отправлять отдельный новый запрос с логином и паролем.

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

Откуда берутся cookie

Cookie создаются в браузере по «просьбе» сервера. В какой-то момент мы решаем, что нужно в браузере посетителя создать cookie с каким-то значением. Для этого нужно чтобы сервер передал в ответе клиенту специальный заголовок, в котором указано, какую запись нужно создать в браузере для данного сайта.

Всё это происходит в фоне и не заметно для пользователя. По этому принципу работает авторизация на любом сайте. В простейшем случае, после того как вы ввели логин и пароль на сайте, сервер проверяет, верны ли они. И если да, то сервер может попросить браузер сохранить эти данные в cookie и при каждом запросе отправлять их ему.

То есть сервер примерно говорит: «Эй, браузер, создай запись для меня с ключом “login” и значением “admin”, и ещё одну с ключом “password” и значением “123”». После этого браузер при любом запросе к серверу начинает отправлять дополнительные данные типа:

Login: admin password: 123

После этого в других местах сайта, где нужна авторизация, теперь можно будет проверить эти данные из 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)

Передаваемые параметры:

  • $name – название cookie
  • $value – её значение
  • $ttl – время жизни. Если указать 0, то cookie будет установлена навсегда (пока её не удалят).
  • $path – путь в адресной строке. Если задать "/", cookie будут доступны из всех директорий сайта. Например, и в http://myproject.loc/ и в http://myproject.loc/posts/ . Если задать "/posts/", cookie будут доступны только из директории http://myproject.loc/posts/ и всех ее поддиректорий (например, http://myproject.loc/posts/new/). По умолчанию значением является текущая директория, в которой cookie устанавливается. Если мы хотим, чтобы 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 будут представлены в виде удобного списка.

Что еще нужно знать про cookie

И в заключение данного урока нужно добавить, что cookie устанавливаются с помощью заголовка в ответе сервера по протоколу HTTP. Протокол HTTP устроен таким образом, что заголовок должен всегда идти перед данными, и никак иначе. Таким образом, функция setcookie и любые другие функции в PHP, изменяющие заголовок в HTTP-ответе, должны вызываться до любого вывода данных.

Можно сначала задать cookie, а затем вывести текст.

Всё прекрасно отработает.

Но нельзя вывести текст (являющийся телом HTTP-ответа), а затем пытаться установить cookie.

Как мы видим, это приведет к ошибке. Так устроен протокол HTTP. Сначала - заголовок, затем - тело. Только так и никак иначе.

Установка нескольких cookie

Нет ничего проще, чем установить несколько cookie. Для этого нужно просто несколько раз вызвать функцию setcookie.

Они успешно будут переданы клиенту.

Пример полноценного взаимодействия с пользователем через cookie мы рассмотрим в следующем уроке. А пока - за домашку.



Установить (удалить) cookie, поставить куки, отправить куку. PHP

Куки это механизм хранения данных в удалённом браузере и отслеживания и идентифицирования пользователей с их помощью. То есть кука - это любая информация, хранящаяся в браузере пользователя, необходимая для взаимодействия пользователя с конкретным сайтом.

Как установить cookie с помощью PHP?

Сразу отметим, что установить куку можно либо на определенный период, например на 2 часа, либо без временного ограничения, тогда кука будет автоматически удалена после закрытия браузера.

В php кука устанавливается с помощью функции setcookie() .

Куки

обязаны быть

отправлены

до любых других шапок/headers (это ограничение кук, а не РНР). Это требует, чтобы вы помещали вызовы этой функции перед тэгами или

Устанавливаем cookie

до закрытия браузера, на странице пишем следующее
setcookie ("_ws_","test",0,"/");
// "/" - если скрипт в другой папке
// кука все равно будет записана так www.sdws.ru
?>

Как установить куку на время, на день, на несколько минут, часов?

В php алгоритм очень прост
// устанавливаем куку
setcookie ("_ws_","test",time()+3600,"/");
?> time()+3600 - устанавливает куку на один час (3600 секунд).
Например, нам необходимо отправить cookie на 23 дня
// устанавливаем куку
setcookie ("_ws_","test",time()+1987200,"/");
?>

Удаление куки. Как удалить cookie?

Удаление куки происходит с помощью той же функции setcookie() . Задаем те же самые параметры, только со знаком минус
setcookie ("_ws_","test",time()-3600,"/");
?> Похожая тема:

Всем привет!

Я снова в строю! В последнее время перемены в жизни вынуждают частенько отдаляться от блога, но тем не менее я здесь и никуда не ухожу! Скоро будет ряд очень полезных и познавательных уроков по заработку! Не пропустите! А пока я расскажу о том, как в php работать с куками. Как можно легко создать, удалить или обновить куки в php?

В последующих статьях мы рассмотрим работу куки в WordPress. А пока для общего развития разберем само понятие куки.

Не буду писать банальщину о том, что куки это в переводе печеньки и все такое. Информация эта, на мой взгляд, совершенно бесполезная. Скажу иначе, куки - это какая-то информация, которая хранится в Вашем браузере.

Например, Вы решили проголосовать в опросе. Далее Вы еще раз захотели проголосовать, но вместо принятия голоса вылезает сообщение: "Вы уже голосовали". Казалось бы, на сайте мы не регистрировались, откуда информация, что мы уже голосовали?

Все дело в куках. При голосовании, Вам в браузер добавляется небольшой файлик с информацией о том, что Вы уже голосовали. И при новом голосовании, скрипт на сервере проверяет, есть ли у Вас такой файлик. Если есть - значит Вы уже голосовали. Все просто.

Как создать куки в php?

Создаются куки в php благодаря функции setcookie . Эта функция принимает в себя следующие параметры:

setcookie ("Имя" , "Значение" , "Срок" , "Путь" , "Домен" , "Защита" ) ;

  • Обязательный здесь только один параметр - "Имя".
  • "Значение" указывается значение куки, как уже все догадались.
  • Срок - сколько времени куки будут работать? После окончания срока действия, кука автоматически будет удалена. Срок может быть бессрочным, в случае, если мы не указываем значение "срок". Срок устанавливается только в секундах!
  • Путь - из какого каталога будет доступна кука. (обычно не указывается, и доступна из всех каталогов)
  • Домен - Домен указывается автоматически. В случае, если доступ к куки нужно получать и на поддоменах, можно указать ".сайт". В таком случае кука будет доступна на всех сайтах с адресами: name.сайт
  • Защита - если написано TRUE, тогда куки передаются по шифрованному соединению (ssl).

Создание куки на PHP

Теперь если посмотреть в браузере (я использую mozilla), то мы увидим куку в действии:

Как видите, куки установились ровно на 1 день, с нужным, нам, названием, и нужным значением.

Как обновить куки php?

Предположим нам нужно обновить значение куки. Т.е. название будет то же, но значение или срок действия надо изменить. В таком случае нам опять же понадобится функция setcookie .

Операция ничем не отличается от операции создания куков. Точно так же пишем похожий код, но с измененными данными:

Теперь посмотрим, что содержится в браузере:

Как видите, обновление куки произошло успешно!

Как прочитать\получить куку php?

То, что в браузере отображается кука, это хорошо, но мы ведь ее создаем, чтобы впоследствии использовать в наших скриптах. Так как же получить куку? Для этого существует глобальный массив кук $_COOKIE , в котором находятся вообще все созданные куки. Обратиться к ним легко - достаточно знать имя.

Теперь кука удалится!

Одно важное замечание, о котором никто не говорит. Когда я только начинал изучать программирование, я удалил куку этим способом. Зашел в браузер - кука осталась. Перерыл все форумы - такая проблема часто встречается, но все отвечают мол: "Хм, не знаю, у меня работает". А причина вот в чем - кука удаляется, но не из файлов пользователя. Там она остается. И открывая браузер, Вы ее видите, но если мы обратимся к ней посредством $_COOKIE["wpguru"] , то в результате будет 0. Вот так можно легко проверить, удалена ли кука.

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

Так что ждите.

До скорых встреч!



КАТЕГОРИИ

ПОПУЛЯРНЫЕ СТАТЬИ

© 2024 «tassr90.ru» — Полезные компьютерные советы