Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab2_php.doc
Скачиваний:
2
Добавлен:
27.08.2019
Размер:
261.12 Кб
Скачать

2 Сессии в php

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

Одной из особенностей протокола HTTP является отсутствие постоянного соединения с пользователем. Более точно, на прикладном уровне соединение вообще не устанавливается, просто передаются данные по запросу (конечно, в процессе передачи данных между клиентом и сервером устанавливается соединение на транспортном уровне средствами протокола TCP, что обеспечивает надежную доставку, но не более).

Для решения этой проблемы используется механизм сессий. Посетителю присваивается уникальный идентификатор сессии – session id (SID). В дальнейшем идентификатор сессии запрашивается при каждом обращении к серверу. Идентификатор сессии у пользователя хранится в Cookies. Если Cookies отключены, сервер добавляет значение SID в каждую ссылку на странице в качестве GET запроса, таким образом, если пользователь переходит по ссылке на странице, на сервер автоматически передается значение SID. Эти действия выполняются автоматически вызовом функции session_start()

Инициализация сессии – session_start

bool session_start (void)

Создает сессию или продолжает работу в текущей сессии, если в скрипт был передан идентификатор сессии посредством запросов GET, POST или Cookies. Всегда возвращает true. Если работа сессии основана на Cookies, session_start() должна быть вызвана до первой передачи данных браузеру.

Сессии может быть присвоено имя, вызовом функции session_name.

Имя сессии – session_name

string session_name ([string name])

Возвращает имя текущей сессии. name – становится именем текущей сессии, если задан этот параметр. Как правило, эта функция вызывается перед вызовом session_start(). Имя сессии должно содержать только символы букв и цифр. В имени должна присутствовать хотя бы одна буква.

Для сохранения данных в промежутках между запросами используется глобальный массив $_SESSION

Пример 5 Счетчик посещения страницы одним пользователем.

<?php

session_name("My_session");

session_start();

if(isset($_SESSION['count'])

$_SESSION['count']++;

else

$_SESSION['count'] = 1;

?>

<html>

<head>

<title>Reload counter</title>

</head>

<body>

Вы просмотрели эту страницу:

<?php

echo $_SESSION['count'];

?>

раз

</body>

</html>

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

5

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]