Функции PHP »»» Функции протокола HTTP(PHP 3, PHP 4, PHP 5)
setcookie - отправляет куки.
Описание
int setcookie (string name [, string value [, int expire [, string path [, string domain [, int secure]]]]])
setcookie() определяет куку для отправки вместе с остальной header-информацией.Куки
обязаны быть отправлены до любых других шапок/headers (это
ограничение кук, а не РНР). Это требует, чтобы вы помещали вызовы этой
функции перед тэгами <html> или
<head>.
Все аргументы, кроме name, являются необязательными.Если имеется только аргумент name, кука с этим
именем будет удалена с удалённого клиента.Вы можете также заместить любой
аргумент пустой строкой (""), чтобы пропустить этот аргумент.Аргументы expire и
secure это целые числа/integer и они не могут быть пропущены с помощью пустой строки.
В них используйте нуль
(0).Аргумент
expire это обычное Unix time
integer, возвращаемое функциями time() или
mktime().Аргумент
secure указывает, что данная кука должна передаваться только через секретное HTTPS-соединение.
После того как куки установлены, доступ к ним может быть получен при
загрузке следующей страницы через массив $_COOKIE (который вызывается
$HTTP_COOKIE_VARS в версиях PHP до 4.1.0).
Обычные ловушки:
Куки будут невидимы до тех пор, пока не будет загружена следующая
страница.
Куки обязаны быть удалены с теми же параметрами, с которыми были
установлены.
В PHP 3 множественные вызовы setcookie() в том же скрипте могут быть выполнены в реверсном порядке. Если вы пытаетесь
удалить одну куку до вставки другой, вы должны сделать вставку до удаления.
В PHP 4 множественные вызовы
setcookie() выполняются в порядке вызова.
Далее идут примеры отправки кук:
Пример 1. Отправка кук функцией setcookie() setcookie ("TestCookie", $value);
setcookie ("TestCookie", $value,time()+3600);/* период действия - 1 час */
setcookie ("TestCookie", $value,time()+3600, "/~rasmus/", ".utoronto.ca", 1); |
|
При удалении куки вы должны убедиться, что дата окончания действия прошла,
чтобы переключить механизм в вашем браузере.
Далее идут примеры удаления куки, созданной в предыдущем примере:
Пример 2. Удаление куки с помощью setcookie() // установить дату окончания действия на один час назад
setcookie ("TestCookie", "", time() - 3600);
setcookie ("TestCookie", "", time() - 3600, "/~rasmus/", ".utoronto.ca", 1); |
|
Обратите внимание, что часть value куки будет автоматически
urlencoded при отправке куки, и, когда она получена, она автоматически
декодируется и присваивается переменной с тем же именем, что и имя куки.
Для просмотра содержимого нашей тестовой куки в скрипте просто используйте
один из следующих примеров:
echo $TestCookie;
echo $_COOKIE["TestCookie"]; |
Вы можете также установить куки массива, используя нотацию в имени куки.
Это даёт эффект установки стольких кук, сколько элементов в этом массиве,
но, когда кука получается скриптом, значения помещаются в массив с именем
куки:
setcookie ("cookie[three]", "cookiethree");
setcookie ("cookie[two]", "cookietwo");
setcookie ("cookie[one]", "cookieone");
if (isset ($cookie)) {
while (list ($name, $value) = each ($cookie)) {
echo "$name == $value<br>\n";
}
} |
О куках дополнительно см. спецификацию Netscape по адресу: http://www.netscape.com/newsref/std/cookie_spec.html.
Microsoft Internet Explorer 4 с Service Pack 1 некорректно работает с
куками, которые имеют установленный параметр path.
Netscape Communicator 4.05 и Microsoft Internet Explorer 3.x
обрабатывают куки некорректно, если path и time не установлены.