- PHP Cookies
- Create Cookies With PHP
- Syntax
- PHP Create/Retrieve a Cookie
- Example
- Modify a Cookie Value
- Example
- Delete a Cookie
- Example
- Check if Cookies are Enabled
- Example
- Complete PHP Network Reference
- $_COOKIE
- Примеры
- Примечания
- Смотрите также
- User Contributed Notes 5 notes
- Php получить значение cookies
- Сохранение cookie
- Получение cookie
- Сохранение массивов в cookie
- Удаление cookie
- Файлы cookie PHP
- Создание файлов cookie
- Синтаксис
- Параметры функции setcookie():
- Пример
- Изменение cookie
- Пример
- Сохранение массивов в cookie
- Пример
- Удаление cookie
- Пример
- Проверьте, включены ли файлы cookie
- Пример
PHP Cookies
A cookie is often used to identify a user. A cookie is a small file that the server embeds on the user’s computer. Each time the same computer requests a page with a browser, it will send the cookie too. With PHP, you can both create and retrieve cookie values.
Create Cookies With PHP
A cookie is created with the setcookie() function.
Syntax
Only the name parameter is required. All other parameters are optional.
PHP Create/Retrieve a Cookie
The following example creates a cookie named «user» with the value «John Doe». The cookie will expire after 30 days (86400 * 30). The «/» means that the cookie is available in entire website (otherwise, select the directory you prefer).
We then retrieve the value of the cookie «user» (using the global variable $_COOKIE). We also use the isset() function to find out if the cookie is set:
Example
$cookie_name = «user»;
$cookie_value = «John Doe»;
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), «/»); // 86400 = 1 day
?>
?php
if(!isset($_COOKIE[$cookie_name])) echo «Cookie named ‘» . $cookie_name . «‘ is not set!»;
> else echo «Cookie ‘» . $cookie_name . «‘ is set!
«;
echo «Value is: » . $_COOKIE[$cookie_name];
>
?>
Note: The setcookie() function must appear BEFORE the tag.
Note: The value of the cookie is automatically URLencoded when sending the cookie, and automatically decoded when received (to prevent URLencoding, use setrawcookie() instead).
Modify a Cookie Value
To modify a cookie, just set (again) the cookie using the setcookie() function:
Example
$cookie_name = «user»;
$cookie_value = «Alex Porter»;
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), «/»);
?>
?php
if(!isset($_COOKIE[$cookie_name])) echo «Cookie named ‘» . $cookie_name . «‘ is not set!»;
> else echo «Cookie ‘» . $cookie_name . «‘ is set!
«;
echo «Value is: » . $_COOKIE[$cookie_name];
>
?>
Delete a Cookie
To delete a cookie, use the setcookie() function with an expiration date in the past:
Example
echo «Cookie ‘user’ is deleted.»;
?>
Check if Cookies are Enabled
The following example creates a small script that checks whether cookies are enabled. First, try to create a test cookie with the setcookie() function, then count the $_COOKIE array variable:
Example
if(count($_COOKIE) > 0) echo «Cookies are enabled.»;
> else echo «Cookies are disabled.»;
>
?>
Complete PHP Network Reference
For a complete reference of Network functions, go to our complete PHP Network Reference.
$_COOKIE
Ассоциативный массив ( array ) значений, переданных скрипту через HTTP Cookies.
Примеры
Пример #1 Пример использования $_COOKIE
Предположим, что значение куки с именем «name» было установлено ранее.
Результатом выполнения данного примера будет что-то подобное:
Примечания
Замечание:
Это ‘суперглобальная’ или автоматическая глобальная переменная. Это просто означает, что она доступна во всех контекстах скрипта. Нет необходимости выполнять global $variable; для доступа к ней внутри метода или функции.
Смотрите также
User Contributed Notes 5 notes
To clarify the previously posted note:
Dots (.) and spaces ( ) in cookie names are being replaced with underscores (_).
The values of $_COOKIE in general are not identic with the values in $_SERVER[«HTTP_COOKIE»]!
In phpinfo() $_SERVER[«HTTP_COOKIE»] shows the actual value stored in the cookie by the browser in 7bit.
In $_COOKIE is this value after a 7bit to 8bit conversion.
When all characters in $_SERVER[«HTTP_COOKIE»] are in ASCII = 7bit, $_COOKIE is displayed in phpinfo(). When one single character is not in ASCII, phpinfo() shows no value!
Although in $_COOKIE is still the 8bit conversion of $_SERVER[«HTTP_COOKIE»]!
The reason: the 8bit conversion alone is not enough to say what characters are meant.
For that the used character-set is necessary.
phpinfo() does not know the character-set and better says nothing.
When using $_COOKIE in a php-generated web page the environment has the info of used character-set and so the meant characters can be displayed.
Three illustrating examples
===========================
A HTML-form is used to get the content which shall be stored in a cookie named «test».
Input string in field «test»: door
$_SERVER[«HTTP_COOKIE»]: test=door
$_COOKIE[«test»]
displayed in phpinfo(): door
displayed in any html page: door
Input string in field «test» (ISO-8859-1 used in form): Tür
$_SERVER[«HTTP_COOKIE»]: test=T%FCr
$_COOKIE[«test»]
displayed in phpinfo(): «»
displayed in a ISO-8859-1-html-page: Tür
(displayed in a UTF-8-html-page: T�r)
Input string in field «test» (UTF-8 used in form): Tür
$_SERVER[«HTTP_COOKIE»]: test=T%C3%BCr
$_COOKIE[«test»]
displayed in phpinfo(): «»
displayed in a UTF-8-html-page: Tür
(displayed in a ISO-8859-1-html-page: Tür)
PHP replaces dots (.) with underscores (_). To find all original cookie names (and value) you can use $_SERVER[‘HTTP_COOKIE’].
For example to retrieve a cookie set with you may use:
$cookies = explode ( ‘; ‘ , $_SERVER [ ‘HTTP_COOKIE’ ]);
$allCookies = [];
foreach( $cookies as $cookie ) $keyAndValue = explode ( ‘=’ , $cookie );
$allCookies [ $keyAndValue [ 0 ]] = $keyAndValue [ 1 ];
>
var_dump ( $allCookies );
/*
array(1) [«testing.dots»]=>
string(5) «value»
>
*/
echo $allCookies [ ‘testing.dots’ ];
?>
Php получить значение cookies
Cookie (куки) представляют небольшие наборы данных (не более 4 кБайт), с помощью которых веб-сайт может сохранить на компьютере пользователя любую информацию. С помощью куки можно отслеживать активность пользователя на сайте: залогинен пользователь на сайте или нет, отслеживать историю его визитов и т.д.
Сохранение cookie
Для установки куки на компьютере пользователя используется функция setcookie() . Она должна вызываться перед тем, как будет отправлен ответ пользователю. Эта функция имеет следующее определение:
bool setcookie(string $name, string $value, int $expire, string $path, string $domain, bool $secure, bool $httponly);
Функция setcookie() может принимать следующие параметры:
- name : имя cookie, которое будет использоваться для доступа к его значению
- value : значение или содержимое cookie — любой алфавитно-цифровой текст не более 4 кБайт
- expire (необязательный параметр): срок действия в секундах, после которого cookie уничтожаются. Если данный параметр не установлен или равен 0, то уничтожение cookie происходит после закрытия браузера. Обычно устанавливается относительно текущего времени, которое можно получить с помощью функции time()
- path (необязательный параметр): путь к каталогу на сервере, для которого будут доступны cookie. Если задать «/», cookie будут доступны для всего сайта. Если задать, например, «/mydir/» , cookie будут доступны только из каталога /mydir/ и всех его подкаталогов. По умолчанию значением является текущий каталог, в котором устанавливаются cookie.
- domain (необязательный параметр): задает домен, для которого будут доступны cookie. Если это домен второго уровня, например, localhost.com , то cookie доступны для всего сайта localhost.com, в том числе и для его поддоменов типа blog.localhost.com . Если задан поддомен blog.localhost.com , то cookie доступны только внутри этого поддомена.
- secure (необязательный параметр): указывает на то, что значение cookie должно передаваться по протоколу HTTPS. Если задано true , cookie от клиента будет передано на сервер, только если установлено защищенное соединение. По умолчанию равно false .
- httponly (необязательный параметр): если равно true , cookie будут доступны только через http протокол. То есть cookie в этом случае не будут доступны скриптовым языкам, например, JavaScript. По умолчанию параметр равен false
Здесь устанавливаются две куки: «name» и «age». Первая куки уничтожается после закрытия браузера, а вторая — через 3600 секунд, то есть через час.
При необходимости мы можем увидеть сохраненные куки в браузере с помощью инструментов разработчика. Например, вид куки в Google Chrome:
В cookie можно сохранить любую информацию, но не стоит сохранять важные с точки зрения безопасности данные, например, пароли. А если и сохранять какую-то важную информацию, то следует хранить ее в зашифрованном виде.
Получение cookie
Чтобы получить cookie, можно использовать глобальный ассоциативный массив $_COOKIE , например, $_COOKIE[«name»] . Так, получим ранее сохраненные куки:
"; if (isset($_COOKIE["age"])) echo "Age: " . $_COOKIE["age"] . "
"; ?>
Сохранение массивов в cookie
Сохранение в куки массивов имеет некоторые особенности. Например, сохраним следующий массив:
setcookie("lang[1]", "PHP"); setcookie("lang[2]", "C#"); setcookie("lang[3]", "Java");
Теперь получим его и выведем на страницу:
if (isset($_COOKIE["lang"])) < foreach ($_COOKIE["lang"] as $name =>$value) < $name = htmlspecialchars($name); $value = htmlspecialchars($value); echo "$name. $value
"; > >
Удаление cookie
Для удаления cookie достаточно в качестве срока действия указать какое-либо время в прошлом:
setcookie ("name", "", time() - 3600);
Файлы cookie PHP
Файл cookie — это небольшой текстовый файл, который позволяет хранить небольшой объем данных (около 4 КБ) на компьютере пользователя. Каждый раз, когда тот же компьютер запрашивает страницу в браузере, он также отправляет файл cookie. Обычно они используются для отслеживания такой информации, как имя пользователя, которое сайт может получить для персонализации страницы, когда пользователь посетит сайт в следующий раз. С помощью PHP вы можете как создавать, так и получать значения файлов cookie.
Создание файлов 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 серверу на одной из предыдущих страниц, вполне возможно сообщить серверу, что в действительности значение теперь другое.
В следующем примере изменим значение файла cookie «user», просто установив его снова с помощью функции setcookie() :
Пример
else < echo "Куки '" . $cookie_name . "' установлен!
"; echo "Значение: " . $_COOKIE[$cookie_name]; > ?>
Сохранение массивов в cookie
Мы может установить массив favorits , используя квадратные скобки в именах favorits[] , а затем прочитать массив favorits и значения этого массива:
Пример
Удаление cookie
Официально, чтобы удалить файл cookie, нужно вызвать функцию setcookie() только с аргументом name , но этот способ не всегда работает, и на него не следует полагаться.
Чтобы удалить файл cookie безопаснее всего установить cookie с датой, которая уже истекла:
Пример
Проверьте, включены ли файлы cookie
Для проверки существования cookie сначала создадим файл cookie new_cookie со значением new_test . Затем просто c помощью функции count() подсчитаем количество элементов массива $_COOKIE :