Функции PHP setcookie()Functions


PHP HTTP 参考手册Полное справочное руководство по PHP HTTP

Определение и использование

Функция setcookie() отправляет HTTP cookie клиенту.

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

Для cookie автоматически создается переменная с тем же именем. Например, если отправляется cookie с именем "user", автоматически создается переменная с именем $user, содержащая значение cookie.

Cookie должен быть установлен до отправки клиенту любого другого вывода.

Возвращает TRUE при успехе или FALSE при неудаче.

Синтаксис

setcookie(name,value,expire,path,domain,secure)

Parameters Описание
name Обязательный. Указывает имя cookie.
value Обязательный. Указывает значение cookie.
expire Необязательно. Задаёт время истечения срока действия cookie.

time()+3600*24*30 установит срок действия cookie в 30 дней. Если этот параметр не задан, cookie автоматически истечёт по завершении сессии (т.е. при закрытии браузера).

path Необязательно. Задаёт серверный путь cookie.

Если путь задан как "/", cookie будет действителен во всём домене. Если путь задан как "/test/", cookie будет действителен в каталоге test и всех его подкаталогах. Значение пути по умолчанию — текущий каталог, в котором находится cookie.

domain Необязательно. Задаёт домен cookie.

Чтобы cookie был действителен во всех поддоменах example.com, нужно задать домен cookie как ".example.com". Если задать домен cookie как www.example.com, cookie будет действителен только в поддомене www.

secure Необязательно. Указывает, требуется ли защищённое HTTPS-соединение для передачи cookie. Установите TRUE, если cookie нужно передавать по защищённому HTTPS-соединению. По умолчанию — FALSE.


Советы и примечания

Совет:Вы можете получить значение cookie с именем "user" через $HTTP_COOKIE_VARS["user"] или $_COOKIE["user"].

Примечание:При отправке cookie значение автоматически URL-кодируется. При получении значение автоматически URL-декодируется. Если это не нужно, можете использовать setrawcookie().


Пример 1

Установить и отправить cookie:

<?php
$value = "my cookie value";

// отправить простое cookie
setcookie("TestCookie",$value);
?>

<html>
<body>

...
...

<?php
$value = "my cookie value";

// отправить cookie, срок действия которого истекает через 24 часа
setcookie("TestCookie",$value, time()+3600*24);
?>

<html>
<body>

...
...


Пример 2

Различные способы получить значение cookie (после установки cookie):

<html>
<body>

<?php
// Вывести отдельные cookie
echo $_COOKIE["TestCookie"];
echo "<br />";
echo $HTTP_COOKIE_VARS["TestCookie"];
echo "<br />";

// Вывести все cookie
print_r($_COOKIE);
?>

</body>
</html>

Приведённый выше код выведет:

моё значение cookie
моё значение cookie
Array ([TestCookie] => моё значение cookie)


Пример 3

Удаление cookie путем установки даты истечения срока действия на прошедшую дату/время:

<?php
// Установите дату истечения срока действия на час назад
setcookie ("TestCookie", "", time() - 3600);
?>

<html>
<body>

...
...


Пример 4

Создание cookie-массива:

<?php
setcookie("cookie[three]","cookiethree");
setcookie("cookie[two]","cookietwo");
setcookie("cookie[one]","cookieone");

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

<html>
<body>

...
...

Приведённый выше код выведет:

three : cookiethree
two : cookietwo
one : cookieone


PHP HTTP 参考手册Полное справочное руководство по PHP HTTP Другие расширения