Инструменты пользователя

Инструменты сайта


sessii

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

sessii [2015/11/10 07:06] (текущий)
Строка 1: Строка 1:
 +====== Сессии ======
 +Механизм **сессии** использует [[cookie]] для своей работы,​ поэтому он может быть реализован на любом серверном языке программирования. Ниже рассматривается реализация механизма сессий для языка [[PHP]].
 +
 +  * [[http://​www.php.net/​manual/​ru/​refs.basic.session.php|php.net Расширения для работы с сессиями]] - здесь последняя актуальная информация.
 +  * [[http://​www.php.net/​manual/​ru/​session.configuration.php|php.ini Настройка во время выполнения]]
 +  * [[http://​phpfaq.ru/​sessions|Сессии. Подробное описание работы и объяснение механизма.]]
 +  * [[http://​php.spb.ru/​php/​session.html|СЕССИИ - обучение и /​правильное/​ использование]]
 +  * [[http://​www.w3schools.com/​php/​php_sessions.asp|PHP 5 Sessions]]
 +
 +Поддержка механизма сессий включена в PHP по умолчанию. Все данные,​ связанные с конкретной сессией будут храниться в файле в директории,​ указанной в опции session.save_path файла конфигурации.
 +
 +Сессии являются простым способом хранения информации для отдельных пользователей с уникальным идентификатором сессии. Это может использоваться для сохранения состояния между запросами страниц. Идентификаторы сессий обычно отправляются браузеру через сессионный cookie и используются для получения имеющихся данных сессии. Отсутствие идентификатора сессии или сессионного cookie сообщает PHP о том, что необходимо создать новую сессию и сгенерировать новый идентификатор сессии.
 +
 +Существуют два метода передачи идентификатора сессии:​ сookies и параметр [[URL]]. Модуль сессии поддерживает оба метода. Метод с cookies является оптимальным,​ но он не всегда доступен. Поэтому PHP предоставляет второй способ,​ который внедряет идентификатор сессии непосредственно в URL. 
 +
 +Сессии используют простую технологию. Когда сессия создана,​ PHP будет либо получать существующую сессию,​ используя переданный идентификатор (обычно из сессионного cookie) или, если ничего не передавалось,​ будет создана новая сессия. PHP заполнит суперглобальную переменную **$_SESSION** сессионной информацией после того, как будет запущена сессия. Когда PHP завершает работу,​ он автоматически сериализует содержимое суперглобальной переменной $_SESSION и отправит для сохранения,​ используя сессионный обработчик для записи сессии.
 +  * **Безопасность**. Оценка важности данных,​ передаваемых в рамках сессии,​ важна для выбора мер по защите этой информации - обычно это приводит к ухудшению удобства для конечного пользователя. Например,​ если необходимо защитить пользователя от простейших методов социальной инженерии,​ следует включить **session.use_only_cookies**. В данном случае со стороны пользовательского ПО обязательна поддержка cookie, иначе механизм сессий не будет работать.
 +
 +====== Использование сессий ======
 +Сессии могут запускаться вручную с помощью функции session_start() и, если директива session.auto_start установлена в 1, сессия автоматически запустится,​ когда PHP посылает любые данные в буфер вывода. Сессия обычно завершает свою работу,​ когда PHP заканчивает исполнять скрипт,​ но может быть завершена и вручную с помощью функции session_write_close(). ​
 +
 +  * Если session_start() вернёт false, значит сессии по каким-то причинам не работают.<​file>​
 +if (!session_start()) die('​Не работает сессия'​);​
 +</​file>​
 +  * А если нужно проверить переменную в сессии,​ воспользуйся функцией isset()<​file>​
 +if (!isset($_SESSION['​your variable'​])) die('​Переменная your variable не найдена в сессии'​);​
 +</​file>​
  
загрузка...
sessii.txt · Последние изменения: 2015/11/10 07:06 (внешнее изменение)