Вступ
Підтримка сесій у PHP полягає у збереженні набору даних між послідовними доступами.
Кожному відвідувачу сайту надається унікальний ідентифікатор, який називається ідентифікатором сесії (session id). Він зберігається або в cookie на стороні користувача, або передається через URL-адресу.
Підтримка сесій допомагає зберігати дані між запитами у суперглобальному масиві. $_SESSION. Коли відвідувач заходить на сайт, PHP автоматично (якщо для директиви session.auto_start встановлено значення 1) або на запит (явним чином через виклик функції session_start()) перевіряє, чи був конкретний ідентифікатор сесії відправлений разом із запитом. Якщо так, відновлюється збережене раніше оточення.
Застереження
Якщо директива session.auto_start включена, то єдиний спосіб помістити об'єкти в сесію - це завантажити визначення класу цього об'єкта черер директиву auto_prepend_file, інакше доведеться виконати серіалізацію (функцією serialize()) та десеріалізацію (функцією unserialize()) об'єкта вручну.
Суперглобальная переменная$_SESSION (і всі зареєстровані змінні) серіалізуються всередині PHP після виконання запиту, використовуючи обробник серіалізації, заданий в INI-опції session.serialize_handler. Зареєстровані, але невизначені змінні позначаються як невизначені. При повторному доступі вони не будуть визначені сесійним модулем, якщо користувач знову не визначить їх.
Увага
Оскільки сесійні дані серіалізуються, змінні з типом ресурсів не можуть зберігатися в сесіях.
Обробники серіалізації (php
иphp_binary
) успадковують обмеження директиви register_Globals. Тому не можна використовувати числові чи рядкові індекси, що містять спеціальні символи ( и!
). Вони призведуть до помилок під час завершення роботи скрипта. У оброблювача php_serialize
такие ограничения отсутствуют.
Зауваження :
Зауважте, при роботі з сесіями запис у сесії не створюється доти, доки змінна не буде зареєстрована в суперглобальному масиві $_SESSION. Це правило застосовуватиметься незалежно від того, чи запускалася сесія функцією session_start()