Сессии(сеансы) в PHP

Протокол HTTP является протоколом "без сохранения состояния". Это означает, что данный протокол не имеет встроенного способа сохранения состояния между двумя транзакциями.

Веб-сервер не поддерживает постоянного соединения с клиентом, и каждый запрос обрабатывается, как новый, безо всякой связи с предыдущими. То есть, нельзя ни отследить запросы от одного и того же посетителя, ни сохранить для него переменные между просмотрами отдельных страниц.

Т. е., когда пользователь открывает сначала одну страницу сайта, а затем переходит на другую страницу этого же сайта, то основываясь только на средствах, предоставляемых протоколом HTTP невозможно установить, что оба запроса относятся к одному пользователю.

Cookie

Cookies - это механизм хранения данных браузером удаленной машины для отслеживания или идентификации возвращающихся посетителей.

"Печенька" - небольшой фрагмент данных, отправленный веб-сервером и хранимый на компьютере пользователя(куки — это простые текстовые данные, набор символов, передаваемый при запросах к веб-сайту). Веб-клиент (обычно веб-браузер) всякий раз при попытке открыть страницу соответствующего сайта пересылает этот фрагмент данных веб-серверу в составе HTTP-запроса.

Сервер установил куки; браузер вернул куки
Cookies зачастую применяется для аутентификации пользователя/отслеживания состояния сеанса(с некоторой оговоркой!!), ведения статистики о пользователях, оформления и поведения веб-сайтов, а так же интернет-магазинов.
Cookies могут быть опасны только в плане деанонимизации и слежения за действиями пользователя.

$_COOKIE

Любые cookies, отправленные серверу браузером клиента, будут автоматически включены в суперглобальный массив $_COOKIE - ассоциативный массив (array) значений, переданных скрипту через HTTP cookies.

Для установки сookies используется функция setcookie(). Для этой функции можно указать шесть параметров, один из которых является обязательным:

					
	setcookie("temp","12324", time()+60);
	setcookie("counter", 0); // пропадёт по закрытию браузера
					
				

Сессия

Сессии являются простым способом хранения информации для отдельных пользователей с уникальным идентификатором сессии. Это может использоваться для сохранения состояния между запросами страниц. Идентификаторы сессий обычно отправляются браузеру через сессионный cookie и используются для получения имеющихся данных сессии. Отсутствие идентификатора сессии или сессионного cookie сообщает PHP о том, что необходимо создать новую сессию и сгенерировать новый идентификатор сессии.

Сессии используют простую технологию. Когда сессия создана, PHP будет либо получать существующую сессию, используя переданный идентификатор (обычно из сессионного cookie) или, если ничего не передавалось, будет создана новая сессия. PHP заполнит суперглобальную переменную $_SESSION сессионной информацией после того, как будет запущена сессия. Когда PHP завершает работу, он автоматически сериализует содержимое суперглобальной переменной $_SESSION и отправит для сохранения, используя сессионный обработчик для записи сессии.

Сервер установил куки; браузер вернул куки
Сессии используют стандартные, хорошо известные способы передачи данных(cookie). Идентификатор - это обычная переменная. По умолчанию ее имя - PHPSESSID. Задача PHP отправить ее браузеру, чтобы тот вернул ее со следующим запросом.

$_SESSION

Ассоциативный массив, содержащий переменные сессии, которые доступны для текущего скрипта.

Сессии PHP представляют собой различные способы сохранения данных для дальнейшего доступа к ним. Они позволяют создавать более гибкие приложения и улучшают привлекательность вашего сайта.

Подробная информация находится в справочнике сессий.

Поддержка сессий в PHP заключается в способе сохранения некоторых данных между несколькими последовательными доступами к веб-сайту.

Каждому посетителю сайта присваивается уникальный идентификатор, называемый идентификатором сессии (session id). Он хранится либо в cookie на стороне пользователя, либо передается через URL.

Поддержка сессий позволяет сохранять данные между запросами в суперглобальном массиве $_SESSION. В тот момент, когда посетитель получает доступ к сайту, PHP проверяет послан ли вместе с запросом определенный идентификатор сессии. Если это так, восстанавливается сохраненное ранее окружение.

Любой скрипт, который будет использовать переменные (данные) из сессий, должен содержать следующую строчку:

					
	session_start();
					
				

Эта команда говорит серверу, что данная страница нуждается во всех переменных, которые связаны с данным пользователем (браузером). Сервер берёт эти переменные из файла и делает их доступными. Очень важно открыть сессию до того, как какие-либо данные будут посылаться пользователю.

Для удаления сессии необходимо выполнить следующие функции

					
	session_start();   // также как и везде надо инициализировать данные сессии
	session_unset();   // уничтажаем данные сессии (переменные)
	session_destroy(); // уничтожает все данные, ассоциированные с сессией
					
				

Примеры использования