- •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.3 Установка срока годности cookies
По умолчанию cookies устанавливаются на один сеанс работы с броузером, однако можно задать для них более продолжительный срок существования. Это очень удобное и полезное свойство, поскольку в этом случае пользователю не нужно предоставлять свои данные вновь при каждом посещении сайта.
Как уже говорилось, срок годности устанавливается в секундах относительно начала эпохи. В PHP существуют функции time и mktime для работы с датой и временем, позволяющие переводить текущее время в количество секунд с начала эпохи. Функция time просто переводит текущее системное время в количество секунд, прошедших с начала эпохи:
time
Синтаксис:
time();
Усовершенствованным вариантом функции time является функция mktime:
mktime
Синтаксис:
int mktime ([int hour [, int minute [, int second [, int month [, int
day [, int year [, int is_dst]]]]]]])
Аргумент is_dst этой функции определяет, попадает ли эта дата в период летнего времени и может принимать следующие значения:
-1 (По умолчанию. Означает, что свойство не задано);
0 (Временной интервал не приходится на период летнего времени);
1 (Временной интервал приходится на период летнего времени).
Примеры установки сроки годности cookies:
<?
/* этот cookie действителен в течение 10 мин после создания */
setcookie("name", $value, time() + 600);
/* действие этого cookie прекращается в полночь 25 января 2010 года */
setcookie("name", $value, mktime(0,0,0,01,25,2010));
/* действие этого cookie прекращается в 18.00 25 января 2010 года */
setcookie("name", $value, mktime(18,0,0,01,25,2010));
?>
2.2.4 Удаление cookie
Удалить cookie просто. Для этого надо вызвать функцию setcookie и передать ей имя того cookie, который подлежит удалению:
setcookie("name");
Другие установленные cookie при этом не удаляются.
2.2.5 Проблемы безопасности, связанные с cookies
Иногда в cookies приходится хранить конфиденциальные данные, и в этом случае разработчик должен позаботиться о том, чтобы информация хранящееся в cookie не была передана третьим лицам. Существует несколько методов защиты информации, хранящейся в cookie:
установка области видимости cookies;
шифрование;
ограничение доступа для доменов;
отправка cookies по защищенному запросу.
Наилучшим решением является комплексное применение всех этих способов.
2.2.6 Установка области видимости cookie
Поскольку, по умолчанию, доступ к cookie происходит из корневого каталога, это может создать "дыры" в системе защиты, так как cookies становятся доступными в любом подкаталоге этого каталога. Ограничить доступ к cookies для всех страниц, кроме расположенных в конкретном каталоге, к примеру, /web, можно следующим образом:
setcookie("name", $value, "/web/");
Однако и в этом случае, к примеру, каталоги /web/index.php, /web1/page.html и т. д. будут удовлетворять этому ограничению. Если такое положение также является нежелательным, можно ограничить область видимости cookies до конкретной страницы:
setcookie("name", $value, "/web/index.php");
Однако и такой способ в полной мере не решает проблему, так как в этом случае доступ к информации, содержащейся в cookie, может получить, к примеру, скрипт /web/index.php-script/anti_cookie.php. Поэтому появляется необходимость в шифровании.
