Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PI_lektsii_2016.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
6.12 Mб
Скачать

14.2 Механізм сесій

Сесія – це механізм, який дозволяє створювати і використовувати змінні, що зберігають своє значення протягом всього часу роботи користувача з сайтом.

Ці змінні для кожного користувача мають різні значення і можуть використовуватися на будь-якій сторінці сайту до виходу користувача з системи. При цьому кожен раз, заходячи на сайт, користувач отримує нові значення змінних, що дозволяють ідентифікувати його протягом цього сеансу або сесії роботи з сайтом. Звідси і назва механізму – сесії.

Завдання ідентифікації користувача вирішується шляхом присвоєння кожному користувачеві унікального номера, так званого ідентифікатора сесії (SID, Session IDentifier). Він генерується PHP в той момент, коли користувач заходить на сайт, і знищується, коли користувач йде з сайту, і представляє собою рядок з 32-х символів (наприклад, ac4f4a45bdc893434c95dcaffb1c1811). Цей ідентифікатор передається на сервер разом з кожним запитом клієнта і повертається назад разом з Існує кілька способів передачі ідентифікатора сесії:

• За допомогою cookies. Cookies були створені спеціально як метод однозначної ідентифікації клієнтів і являють собою розширення протоколу HTTP. В цьому випадку ідентифікатор сесії зберігається в тимчасовому файлі на комп'ютері клієнта, що послав запит. Метод, безсумнівно, хороший, але багато користувачів відключають підтримку cookies на своєму комп'ютері через проблеми з безпекою.

• За допомогою параметрів командного рядка. В цьому випадку ідентифікатор сесії автоматично вбудовується в усі запити (URL), що передаються серверу, і зберігається на стороні сервера.

Наприклад: адреса http://green.nsu.ru/test.php перетворюється на адресу http://green.nsu.ru/test.php?PHPSESSID=ac4f4a45bdc893434c95dcaffb1c1811

Цей спосіб передачі ідентифікатора використовується автоматично, якщо у браузера, що відправив запит, вимкнений cookies. Він досить надійний - передавати параметри в командному рядку можна завжди. З іншого боку, ідентифікатор сесії можна підглянути, скористатися збереженим варіантом у рядку браузера або підробити. Хоча, звичайно, всі ці проблеми або надумані, або їх можна вирішити.

Наприклад, хто зможе запам'ятати рядок з 32 різних символів? А якщо правильно організувати роботу з сесіями (вчасно їх знищувати), то навіть збережений в браузері номер сесії нічого не дасть.

14.3 Налаштування сесій

Перш ніж почати працювати з сесіями, слід розібратися в тому, як коректно налаштовувати їх обробку інтерпретатором PHP. Сама робота з сесіями в PHP підтримується за замовчуванням. Це означає, що встановлювати ніяких додаткових елементів не потрібно. А ось знати, що записано в налаштуваннях цього модуля, корисно, щоб уникнути помилок при роботі з ним.

Налаштування PHP, в тому числі і для роботи з сесіями, прописуються у файлі php.ini. Звернемося до цього файлу.

Як ми вже знаємо, ідентифікатор сесії (число, за яким можна унікально ідентифікувати клієнта, що послав запит) зберігається або на комп'ютері-сервері, або на комп'ютері-клієнті, або і там, і там.

Параметр session.save_path в php.ini, визначає, де на сервері зберігатимуться дані сесії. Через нього найчастіше виникають проблеми для Windows-серверів, тому що за замовчуванням значення session.save_path встановлено в / tmp. І якщо в кореневій директорії сервера такої папки немає, то при запуску сесій буде видаватися помилка.

Сервер може обробляти велику кількість сесій одночасно, і всі їхні тимчасові файли будуть зберігатися в директорії, заданої параметром session.save_path. Якщо система погано працює з папками великого розміру, то зручно використовувати піддиректорії. Для цього, крім назви папки, в значення параметра додають ще й число, що визначає глибину вкладеності піддиректорій в цій папці: N; / dir. Це значення потрібно обов'язково взяти в лапки, оскільки крапка з комою є одним із символів коментарів у файлі налаштувань PHP. Всі директорії і піддиректорії для зберігання даних сесії потрібно створити самостійно.

Наприклад: 2; / Temp визначає, що змінні сесій будуть зберігатися в папках виду c: \ Temp \ 0 \ a \, c: \ Temp \ 0 \ b \ і т.п.

Зберігання даних на стороні клієнта здійснюється за допомогою cookies. Роботу PHP з cookies можна налаштувати, зокрема, за допомогою параметрів session.use_cookies, session.cookie_lifetime і т.п.

Параметр session.use_cookies визначає, чи використовувати cookies при роботі з сесіями. За замовчуванням ця опція включена (тобто приймає значення "1").

Параметр session.cookie_lifetime задає тривалість життя cookies в секундах. За замовчуванням це "0", тобто дані в cookies вважаються правильними до закриття вікна браузера.

Крім цих параметрів, корисними можуть виявитися session.name, що визначає ім'я сесії, session.auto_start, що дозволяє автоматично запускати сесії, session.serialize_handler, що задає спосіб кодування даних сесії, і параметр session.cache_expire, що визначає, через скільки хвилин застаріває документ в кеші.

Ім'я сесії session.name за замовчуванням встановлюється як PHPSESSID і використовується в cookies як ім'я змінної, в якій зберігається ідентифікатор сесії. Автоматичний запуск сесій за замовчуванням відключений, але його можна задати, зробивши значення session.auto_start рівним "1". Для кодування даних сесії за замовчуванням використовується php. Старіння даних, які збережені в кеші, відбувається через 180 хвилин.

Існує ще безліч налаштувань, з якими можна познайомитися в документації або безпосередньо в файлі налаштувань php.ini. На наш погляд, знайомства з перерахованими вище параметрами досить для роботи з сесіями в PHP. Так що приступимо.

14.4 Робота з сесіями

При роботі з сесіями розрізняють наступні етапи:

• відкриття сесії;

• реєстрація змінних сесії і їх використання.

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