Вступ

Підтримка сесій у 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()