- •1. Цель работы 2
- •2. Методические указания по организации самостоятельной работы 2
- •2.1 Сессии 2
- •3. Порядок выполнения работы и индивидуальные задания 11
- •3.1 Содержание отчета 11
- •3.2 Индивидуальные задания 11
- •1. Цель работы
- •2. Методические указания по организации самостоятельной работы
- •2.1 Сессии
- •2.1.1 Открытие сессии
- •2.1.2 Регистрация переменных сессии
- •2.1.3 Закрытие сессии
- •2.1.4 Пример простой сессии
- •2.2.1 Установка cookies
- •2.2.2 Пример простого приложения с cookies
- •2.2.3 Установка срока годности cookies
- •2.2.4 Удаление cookie
- •2.2.5 Проблемы безопасности, связанные с cookies
- •2.2.6 Установка области видимости cookie
- •2.2.7 Шифрование
- •2.2.8 Ограничение доступа для доменов
- •2.2.9 Отправка cookies по защищенному запросу
- •3. Порядок выполнения работы и индивидуальные задания
- •3.1 Содержание отчета
- •3.2 Индивидуальные задания
2.2.1 Установка cookies
Установка cookies производится с помощью функции setcookie:
setcookie
Синтаксис:
bool setcookie (string name [, string value [, int expire [, string path
[, string domain [, int secure]]]]])
Эта функция имеет следующие аргументы:
name - имя устанавливаемого cookie;
value - значение, хранящееся в cookie с именем $name;
expire - время в секундах с начала эпохи, по истечение которого текущий cookie становится недейтвительным;
path - путь, по которому доступен cookie;
domain - домен, из которого доступен cookie;
secure - директива, определяющая, доступен ли cookie не по запросу HTPPS. По умолчанию эта директива имеет значение 0, что означает возможность доступа к cookie по обычному запросу HTTP.
2.2.2 Пример простого приложения с cookies
Давайте создадим простой сценарий, подсчитывающий при помощи cookies количество обращений посетителя к странице.
В cookie с именем counter будет храниться число посещений страницы пользователем:
<?
$counter++;
setcookie("counter",$counter);
echo("Вы посетили эту страницу $counter раз");
?>
Результат выполнения сценария на рис.:
При работе с cookies необходимо учитывать важный момент, заключающийся в том, что cookie надо обязательно устанавливать перед отправкой в броузер каких-либо заголовков, поскольку сами cookies устанавливаются в виде заголовков. Поэтому если установить cookies после какого-либо текста, отправляемого в броузер, то возникнет ошибочная ситуация.
Рассмотрим этот вопрос подробнее, для чего модифицируем код, приведенный в листинге, поместив перед установкой cookie текст:
Если здесь поместить текст, то возникнет ошибка, так как
будет послан заголовок Content-type: text/html.
<?
$counter++;
setcookie("counter",$counter);
echo("Вы посетили эту страницу $counter раз");
?>
Как видно из рис., при выполнении этого сценария выводится сообщение об ошибке:
Заметим, что в этих листингах мы обращаемся к переменной $counter, в которой хранится значение cookie, как к глобальной, что требует наличия включенной директивы register_globals. Если эта директива отключена, то значение, хранящееся в cookie можно получить через глобальный массив $_COOKIE["name"]:
<?
$_COOKIE['counter']++;
setcookie("counter",$_COOKIE['counter']);
echo 'Вы посетили эту страницу '.$_COOKIE['counter'].' раз';
?>
Поскольку некоторые пользователи отключают cookie в настройках своих браузеров, для корректной работы, в приложение, использующее cookies, необходимо помещать код, проверяющий включены ли cookies у посетителя, и, если нет, то сообщающий ему о необходимости включить cookie:
<?
if(!$cookie)
{
/* посылаем заголовок переадресации на страницу,
с которой будет предпринята попытка установить cookie */
header("Location: $PHP_SELF?cookie=1");
/* устанавливаем cookie с именем "test" */
setcookie("test","1");
}
else
{
if(!$test)
{
echo("Для корректной работы приложения необходимо включить cookies");
}
else
{
/* cookie включены, переходим на нужную страницу */
header("Location: http://localhost/test1.php");
}
}
?>