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

Сессии в рнр

Предположим, что у каждого посетителя есть некая область памяти (у каждого - своя), в которую наша программа может что-то записывать и читать. Наша программа не должна заботиться о ней. И все это можно сделать. Эта абстрактная область памяти имеет идеальный интерфейс. Вернее, не имеет его. К примеру, если бы данная область хранилась в файлах, нам надо было бы файлы читать и анализировать. Для записи - надо было бы записывать туда данные в каком-то формате. При хранении в базе данных - нам пришлось в начале программы выполнять SQL-запрос, чтобы извлечь все данные и в самом конце выполнения программы записать их обратно. Все это (затраты на чтение файла или базы данных) - называется интерфейс. Как я сказал, наше общение с базой данных вообще не имеет интерфейса. Это значит, что любые переменные, которые мы пожелаем, будут с некоторого момента считаться областью памяти посетителя. При каждом запуске программы, от разных посетителей, она будет иметь доступ через какие-то переменные только к персональным настройкам.

С помощью чего PHP-процессор различает пользователей? С помощью идентификатора. Он является 128 битным числом. Если человек пришел на сайт впервые и PHP-процессор это видет, то данному посетителю присваивается какое-то случайное число, не присвоенное еще никому. В дальнейшем, при повторном заходе, посетитель будет ассоциирован с его личным числом (идентификатором), из-за чего программе будет предоставлена персональная область памяти.

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

Старт сессии нужно вызывать в начале каждого РНР файла:

bool session_start (void).

session_start() создаёт сессию (или продолжает текущую на основе session id, переданного через GET-переменную или куку).

На следующем рисунке изображен код верхнего фрэйма стартовой страницы интернет-магазина Рисунок 2 Главная страница интернет-магазина с приветствием и кнопками-ссылками на три другие страницы Рисунок 4 topframe.php.

Рисунок 4 topframe.php

После окончания сеанса пользователя нужно закрыть сессию с помощью функции:

bool session_destroy (void)

session_destroy() разрушает все данные, ассоциированные с текущей сессией.

int header (string string [, bool replace])

header() используется для отправки необработанных HTTP-шапок.

В примере, приведенном ниже Рисунок 5 logout.php происходит закрытие сесии и перенапра-вление на страницу main.php.

Рисунок 5 logout.php

Пересылка данных из форм

На следующем рисунке изображен код нижнего фрэйма стартовой страницы интернет-магазина Рисунок 2 Главная страница интернет-магазина с двумя ссылками и формой авторизации Рисунок 6 main.php.

Рисунок 6 main.php

Форма содержит два поля ввода: логин и пароль, и кнопку «Вход». В верхней строке формы описано действие:

action = login.php

Это обозначает, что после нажатия кнопки управление будет передано в файл login.php, а содержимое полей будет сохранено под названием ‘login’ и ‘pass’ соответственно.

Рисунок 7 login.php

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