Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 4 - сеансы.doc
Скачиваний:
7
Добавлен:
03.05.2019
Размер:
261.63 Кб
Скачать

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");

}

}

?>