Главная > Программирование > РНР: настольная книга программиста
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

Глава 31. Сессии в РНР

На разнообразных сайтах, посвященных программированию, в разделах о Web-программировании, в частности в форумах на эту тему, часто задают вопрос: «Что такое сессии в РНР и зачем они нужны?».

В данной главе рассмотрены следующие вопросы:

• понятие сессий в РНР;

• работа с сессиями;

• практическое применение;

• безопасность.

31.1. Понятие сессий в РНР

Когда появились первые версии РНР, программисты столкнулись с такой проблемой, как отсутствие глобальных переменных. Выполнялся некий скрипт, посылал результирующую клиенту, и все ресурсы, используемые этим

скриптом, уничтожались. Рассмотрим пример. Допустим, есть две страницы одного сайта — index.php и page1.php. Вот исходный код этих страниц:

Пример 31.1. Файл index.php

<?php

$а = "Test index.php";

?>

<html>

<body>

<?php

echo $a;

?>

</body>

</html>

Пример 31.2. Файл page1. php

<html>

<body>

<?php

echo

?>

</body>

</html>

Если выполнить эти два скрипта, то на первой странице мы увидим надпись «Test index.php», а вторая страница будет пустой, так как значение переменной $ане передалось на вторую страницу сайта.

Тогда разработчики сайтов стали использовать Cookies для хранения глобальных переменных на стороне клиента. Этот процесс выглядел примерно так: пользователь приходит на главную страницу сайта и производит какие-то действия. Вся информация, которая связана с этим пользователем и может потребоваться на других страницах сайта, будет храниться у него в браузере в виде Cookies. У этого метода есть серьезные минусы, из-за которых от РНР в свое время отвернулось немало программистов. Например, нужно авторизовать пользователя, чтобы разрешить ему доступ к неким закрытым разделам сайта. В таком случае придется оставить на машине пользователя Cookies, который будет служить его идентификатором на сайте. Такой способ очень громоздкий и неудобный, ведь всю информацию, посылаемую пользователю, желательно кодировать, дабы избежать утечки. Еще совсем недавно подделкой Cookies можно было «взломать» не один чат или пробраться в чужую почту. А если у пользователя стоит браузер, который не поддерживает Cookies или они у него просто отключены?

И вот тут на помощь пришли сессии, при использовании которых вся информация хранится не на стороне клиента, а непосредственно на сервере. К тому же работать с сессиями кудапроще и удобнее. В браузере клиентахранится лишь уникальный идентификатор номера сессии, либо в форме Cookies, либо в форме переменной в адрес ной строке браузера. Какой способ использовать для передачи идентификатора сес сии между страницами, интерпретатор РНР выбирает сам. И это на 100 % безопасно, так как идентификатор сессии уникален, иподделать его практически невозможно.

<< Предыдущий параграф Следующий параграф >>
Оглавление