механізм сесій
Сесія - це механізм, який дозволяє створювати і використовувати змінні, що зберігають своє значення протягом всього часу роботи користувача з сайтом.
Ці змінні для кожного користувача мають різні значення і можуть використовуватися на будь-якій сторінці сайту до виходу користувача з системи. При цьому кожен раз, заходячи на сайт. користувач отримує нові значення змінних, що дозволяють ідентифікувати його протягом цього сеансу або сесії роботи з сайтом. Звідси і назва механізму - сесії.
Завдання ідентифікації користувача вирішується шляхом присвоєння кожному користувачеві унікального номера, так званого ідентифікатора сесії (SID. Session IDentifier). Він генерується PHP в той момент, коли користувач заходить на сайт. і знищується, коли користувач йде з сайту, і представляє собою рядок з 32 символів (наприклад, ac4f4a45bdc893434c95dcaffb1c1811). Цей ідентифікатор передається на сервер разом з кожним запитом клієнта і повертається назад разом з відповіддю сервера.
Існує кілька способів передачі ідентифікатора сесії:
За допомогою cookies.
Cookies були створені спеціально як метод однозначної ідентифікації клієнтів і являють собою розширення протоколу HTTP. В цьому випадку ідентифікатор сесії зберігається в тимчасовому файлі на комп'ютері клієнта, що послав запит. Метод, безсумнівно, хороший, але багато користувачів відключають підтримку cookies на своєму комп'ютері через проблеми з безпекою.
В цьому випадку ідентифікатор сесії автоматично вбудовується в усі запити (URL), що передаються серверу, і зберігається на стороні сервера.
Крім перерахованих варіантів передачі ідентифікатора сесії. відомо ще кілька, але ми їх розглядати не будемо через їхню складність.
Налаштування сесій
Перш ніж почати працювати з сесіями. слід розібратися в тому, як коректно налаштовувати їх обробку інтерпретатором PHP. Сама робота з сесіями в PHP підтримується за замовчуванням. Це означає, що встановлювати ніяких додаткових елементів не потрібно. А ось знати, що записано в налаштуваннях цього модуля, корисно, щоб уникнути помилок при роботі з ним.
Налаштування PHP. в тому числі і для роботи з сесіями. прописуються у файлі php.ini. Звернемося до цього файлу.
Як ми вже знаємо, ідентифікатор сесії (число, за яким можна унікально ідентифікувати клієнта, що послав запит) зберігається або на комп'ютері-сервері, або на комп'ютері-клієнті, або і там, і там.
Параметр session.save_path в php.ini. визначає, де на сервері зберігатимуться дані сесії. Через нього найчастіше виникають проблеми для Windows-серверів, тому що за замовчуванням значення session.save_path встановлено в / tmp. І якщо в кореневій директорії сервера такий папки немає, то при запуску сесій буде видаватися помилка.
Наприклад: 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. Так що приступимо.