Php cookie призыв к действию пример. Учимся работать с cookie в PHP. Получение cookie в PHP

(PHP 4, PHP 5, PHP 7)

setcookie — Посылает cookie

Описание

Bool setcookie (string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]])

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

После передачи клиенту cookie станут доступны через массивы $_COOKIE и $HTTP_COOKIE_VARS при следующей загрузке страницы. Следует иметь в виду, что суперглобальные переменные , такие как $_COOKIE , стали доступны только в PHP 4.1.0. Значения cookie также есть в $_REQUEST .

Список параметров

Все аргументы, за исключением name , являются необязательными. Если нужно пропустить какой-либо аргумент, можно вместо него поставить пустую строку ("" ). Это не относится к аргументу expire . Так как он принимает значение типа integer, для его замены пустая строка не подходит. Используйте вместо нее ноль (0 ).

Expire

Время, когда срок действия cookie истекает. Это метка времени Unix, то есть это количество секунд с начала эпохи. Другими словами, желательно задавать это время с помощью функции time() , прибавляя время в секундах, через которое срок действия cookie должен истечь. Либо можно воспользоваться функцией mktime() . time()+60*60*24*30 установит срок действия cookie 30 дней. Если задать 0 или пропустить этот аргумент, срок действия cookie истечет с окончанием сессии (при закрытии броузера).

Замечание :

Можно заметить, что expire принимает в качестве значения метку времени Unix, а хранит его в формате Wdy, DD-Mon-YYYY HH:MM:SS GMT . PHP делает внутреннее преобразование автоматически.

path

Путь к директории на сервере, из которой будут доступны cookie. Если задать "/" , cookie будут доступны во всем домене domain . Если задать "/foo/" , cookie будут доступны только из директории /foo/ и всех ее поддиректорий (например, /foo/bar/ ) домена domain . По умолчанию значением является текущая директория, в которой cookie устанавливается.

Домен, которому доступны cookie. Задание домена "www.example.com" сделает cookie доступными в поддомене www и поддоменах более высоких порядков. Cookie доступные низким уровням, таким как "example.com" , будут доступны во всех поддоменах высших уровней, с том числе "www.example.com" . Старые броузеры, следующие устаревшим нормативам » RFC 2109 , могут требовать . перед доменом, чтобы включались все поддомены.

Указывает на то, что значение cookie должно передаваться от клиента по защищенному HTTPS соединению. Если задано TRUE , cookie от клиента будет передано на сервер, только если установлено защищенное соединение. При передаче cookie от сервера клиенту следить за тем, чтобы cookie этого типа передавались по защищенному каналу, должен программист веб-сервера (стоит обратить внимание на $_SERVER["HTTPS"]).

Httponly

Если задано TRUE , cookie будут доступны только через HTTP протокол. То есть cookie в этом случае не будут доступны скриптовым языкам, вроде JavaScript. Эта возможность была предложена в качестве меры, эффективно снижающей количество краж личных данных посредством XSS атак (несмотря на то, что поддерживается не всеми броузерами). Стоит однако же отметить, что вокруг этой возможности часто возникают споры о ее эффективности и целесообразности. Аргумент добавлен в PHP 5.2.0. Может принимать значения TRUE или FALSE .

Возвращаемые значения

Если перед вызовом функции клиенту уже передавался какой-либо вывод (тэги, пустые строки, пробелы, текст и т.п.), setcookie() вызовет отказ и вернет FALSE . Если setcookie() успешно отработает, то вернет TRUE . Это, однако, не означает, что клиентское приложение (броузер) правильно приняло и обработало cookie.

Примеры

Ниже представлено несколько примеров, как отправлять cookie:

Пример #1 Пример использования setcookie()

$value = "что-то где-то" ;

Setcookie ("TestCookie" , $value );
setcookie ("TestCookie" , $value , time ()+ 3600 ); /* срок действия 1 час */
setcookie ("TestCookie" , $value , time ()+ 3600 , "/~rasmus/" , "example.com" , 1 );
?>

Стоит отметить, что значение cookie перед отправкой клиенту подвергается URL-кодированию. При обратном получении значение cookie декодируется и помещается в переменную, с тем же именем, что и имя cookie. Если вы не хотите, чтобы значения кодировались, используйте функцию setrawcookie() (работает в PHP 5). Посмотреть содержимое наших тестовых cookie можно, запустив один из следующих примеров:

// Вывести одно конкретное значение cookie
echo $_COOKIE [ "TestCookie" ];
echo $HTTP_COOKIE_VARS [ "TestCookie" ];

// В целях тестирования и отладки может пригодиться вывод всех cookie
print_r ($_COOKIE );
?>

Пример #2 Пример удаления cookie посредством setcookie()

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

// установка даты истечения срока действия на час назад
setcookie ("TestCookie" , "" , time () - 3600 );
setcookie ("TestCookie" , "" , time () - 3600 , "/~rasmus/" , "example.com" , 1 );
?>

Пример #3 setcookie() и массивы

Имеется возможность помещать в cookie массивы. Для этого каждому cookie нужно дать имя в соответствии с правилами именования массивов. Такая возможность позволяет поместить столько значений, сколько имеется элементов в массиве. При обратном получении все эти значения будут помещены в массив с именем этого cookie:

// отправка cookie
setcookie ("cookie" , "cookiethree" );
setcookie ("cookie" , "cookietwo" );
setcookie ("cookie" , "cookieone" );

// после перезагрузки страницы, выведем cookie
if (isset($_COOKIE [ "cookie" ])) {
foreach ($_COOKIE [ "cookie" ] as $name => $value ) {
$name = htmlspecialchars ($name );
$value = htmlspecialchars ($value );
echo " $name : $value
\n" ;
}
}
?>

в скрипте, либо можно задать директиву output_buffering в файле php.ini или конфигурационных файлах сервера.

Замечание :

Общие замечания:

  • Cookie станут видимыми только после перезагрузки страницы, для которой они должны быть видны. Для проверки, правильно ли cookie установились, проверьте их при следующей загрузке страницы до истечения срока их действия. Срок действия cookie задается в параметре expire . Удобно проверять существование cookie простым вызовом print_r($_COOKIE); .
  • При удалении cookie должны быть заданы те же параметры, что и при установке. Если в качестве значения задать пустую строку или FALSE , а остальные параметры задать соответственно предыдущему вызову, установившему cookie, тогда cookie c заданным именем будет удалено с клиентской машины. Внутренне это выглядит так: cookie присваивается значение "deleted", а срок действия переносится на год в прошлое.
  • Так как установка значения FALSE приведет к удалению cookie, не следует задавать cookie значения булевого типа. Вместо этого можно использовать 0 для FALSE и 1 для TRUE .
  • Cookie можно именовать, как массивы, и они будут доступны в PHP скрипте, как массивы, но на пользовательской машине они будут храниться в виде отдельных записей. Для задания cookie c множеством имен и значений желательно использовать функцию explode() . Не рекомендуется для этих целей использовать функцию serialize() , так как это негативно сказывается на безопасности скрипта.

При многократных вызовах setcookie() функции выполняются в том порядке, в котором вызывались.

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 приходится очень часто, и я постараюсь в следующих статьях закрепить Ваши знания о них.

Cookies - это механизм хранения данных броузером удаленного компьютера для идентификации возвращающихся посетителей и хранения параметров веб-страниц (например, переменных).

Приведем пример использования Cookies на конкретном примере.

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

Данную задачу можно решить двумя способами. Первый из них заключается в ведении учета IP-адресов пользователей. Для этого нужна база данных всего из одной таблицы, примерная структура которой такая:

Когда пользователь заходит на сайт, нам нужно определить его IP-адрес, найти в базе данных информацию о его посещениях, увеличить счетчик и вывести его в браузер посетителя. Написать обработчик (скрипт) подобной процедуры несложно. Однако при использовании такого метода у нас появляются проблемы следующего характера:

  • Для каждого IP-адреса нужно вести учет в одной таблице, которая может быть очень большой. А из этого следует, что мы нерационально используем процессорное время и дисковое пространство;
  • У большинства домашних пользователей IP-адреса являются динамическими. То есть, сегодня у него адрес 212.218.78.124, а завтра - 212.218.78.137. Таким образом, велика вероятность идентифицировать одного пользователя несколько раз.

Можно использовать второй способ, который намного легче в реализации и более эффективен. Мы устанавливаем в Cookie переменную, которая будет храниться на диске удаленного пользователя. Эта переменная и будет хранить информацию о посещениях. Она будет считываться скриптом при обращении посетителя к серверу. Выгода такого метода идентификации очевидна. Во-первых, нам не нужно хранить множество ненужной информации о IP-адресах. Во-вторых, нас не интересуют динамические IP-адреса, поскольку данные о своих посещениях хранятся конкретно у каждого посетителя сайта.

Теперь понятно, для чего мы можем использовать Cookie - для хранения небольшой по объему информации у клиента (посетителя) сайта, например: настройки сайта (цвет фона страниц, язык, оформление таблиц и.т.д.), а также другой информации.

Файлы Cookies представляют собой обыкновенные текстовые файлы, которые хранятся на диске у посетителей сайтов. Файлы Cookies и содержат ту информацию, которая была в них записана сервером.

Программирование Cookies

Приступим к программированию Cookies.

Для установки Cookies используется функция SetCookie() . Для этой функции можно указать шесть параметров, один из которых является обязательным:

  • name - задает имя (строк), закрепленное за Cookie;
  • value - определяет значение переменной (строка);
  • expire - время "жизни" переменной (целое число). Если данный параметр не указать, то Cookie будут "жить" до конца сессии, то есть до закрытия браузера. Если время указано, то, когда оно наступит, Cookie самоуничтожится.
  • path - путь к Cookie (строка);
  • domain - домен (строка). В качестве значения устанавливается имя хоста, с которого Cookie был установлен;
  • secure - передача Cookie через защищенное HTTPS-соединение.

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

Пример установки Cookies:



SetCookie ("Test" , "Value" );

// Устанавливаем Cookie на один час после установки:
SetCookie ("My_Cookie" , "Value" , time ()+ 3600 );

?>

При использовании Cookies необходимо иметь в виду, что Cookies должны устанавливаться до первого вывода информации в браузер (например, оперетором echo или выводом какой-либо функции). Поэтому желательно устанавливать Cookies в самом начале скрипта. Cookies устанавливаются с помощью определенного заголовка сервера, а если скрипт выводит что-либо, то это означает, что начинается тело документа. В результате Cookies не будут установлены и может быть выведено предупреждение. Для проверки успешности установки Cookies можно использовать такой метод:

// Устанавливаем Cookie до конца сессии:
// В случае успешной установки Cookie, функция SetCookie возвращает TRUE:
"

Cookies успешно установлены!

" ;
?>

Функция SetCookie() возвращает TRUE в случае успешной установки Cookie. В случае, если Cookie установить не удается SetCookie() возвратит FALSE и возможно, предупреждение (зависит от настроек PHP). Пример неудачной установки Cookie:

// Cookies установить не удастся, поскольку перед отправкой
// заголовка Cookie мы выводим в браузер строку "Hello":
echo "Hello" ;
// Функция SetCookie возвратит FALSE:
if (SetCookie ("Test" , "Value" )) echo "

Cookie успешно установлен!

" ;
else echo "

Cookie установить не удалось!

"
;
// Выводит "Cookie установить не удалось!".
?>

Cookie установить не удалось, поскольку перед посылкой заголовка Cookie мы вывели в браузер строку "Hello".

Чтение значений Cookies

Получить доступ к Cookies и их значениям достаточно просто. Они хранятся в суперглобальных массивах и $_COOKIE и $HTTP_COOKIE_VARS .

Доступ к значениям осуществляется по имени установленных Cookies, например:

echo $_COOKIE["my_cookie"];
// Выводит значения установленной Cookie "My_Cookie"

Пример установки Cookie и последующего его чтения:

// Устанавливаем Cookie "test" со значением "Hello" на один час:
setcookie ("test" , "Hello" , time ()+ 3600 );
// При следующем запросе скрипта выводит "Hello":
echo @$ _COOKIE [ "test" ];
?>

В рассмотренном примере при первом обращении к скрипту устанавливается Cookie "test" зо значением "hello". При повторном обращении к скрипту будет выведено значение Cookie "test", то есть строка "Hello".

При чтении значений Cookies обращайте внимание на проверку существования Cookies, например, используя оператор isset() . Либо путем подавления вывода ошибок опереатором @

А вот пример, как построить счетчик числа загрузок страницы с помощью Cookies:

// Проверяем, был ли уже установлен Cookie "Mortal",
// Если да, то читаем его значение,
// И увеличиваем значение счетчика обращений к странице:
if (isset ($ _COOKIE [ "Mortal" ])) $ cnt =$ _COOKIE [ "Mortal" ]+ 1 ;
else $ cnt = 0 ;
// Устанавливаем Cookie "Mortal" зо значением счетчика,
// С временем "жизни" до 18/07/29,
// То есть на очень долгое время:
setcookie ("Mortal" ,$ cnt , 0x6FFFFFFF );
// Выводит число посещений (загрузок) этой страницы:
echo "

Вы посещали эту страницу " .@$ _COOKIE [ "Mortal" ]. " раз

" ;
?>

Удаление Cookies

Иногда возникает необходимость удаления Cookies. Сделать это несложно, необходимо лишь вновь установить Cookie с идентичным именем и пустым параметром. Например:

// Удаляем Cookie "Test":
SetCookie ("Test" , "" );
?>

Установка массива Cookies и его чтение

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

// Устанавливаем массив Cookies:
setcookie ("cookie" , "Первый" );
setcookie ("cookie" , "Второй" );
setcookie ("cookie" , "Третий" );

// После перезагрузки страницы мы отобразим
// Состав массива Cookies "cookie":
if (isset ($ _COOKIE [ "cookie" ])) {
foreach ($ _COOKIE [ "cookie" ] as $ name => $ value ) {
echo "$name: $value
" ;
}
}
?>

Преимущества использования Cookies неоспоримы. Однако существуют и некоторые проблемы их использования. Первая из них заключается в том, что посетитель может блокировать прием Cookies браузером или попросту удалить все Cookies или их часть. Таким образом, мы можем иметь некоторые проблемы в идентификации таких посетителей.



<<< Назад Содержание Вперед >>>
Есть еще вопросы или что-то непонятно - добро пожаловать на наш

Файлы 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 - это набор данных (сохраняемый как текстовый файл), который создаётся 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):

После этого производим запись куки.

Обратите внимание на $_SERVER (можно заменить на $_SERVER). Эта константа содержит путь к текущему файлу. В результате обработки формы (значение атрибута action) обращается по этому же пути, к этому файлу.

Следом идёт проверка отправки формы (передавались ли значение log, то есть нажимали ли кнопку Войти). Если да, то проверяются данные login и pass. Стоит обратить внимание, что пароль не передаётся в чистом виде, а зашифровывается встроенной в PHP функцией шифрования данных md5().

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

Спасибо за внимание!