Обучение PHP сесия

Една от характеристиките на използвания протокол за HTTP е "без памет". Това означава, че сървърът "забрави" за потребителя, веднага след края на HTTP сесия (изтегляне на страница). Дори и само за да се актуализира по-рано зарежда страницата - сървърът ще приемем, че новият потребител е адресирано до него.

За статичен сайт е напълно достатъчно, защото съдържанието на страниците не се е променило и се показва на всички потребители е zhe.A тук за динамични сайтове ситуацията е много по-зле - там сървъра трябва някак си много различни един от друг и всеки от тях на необходимите данни.

PHP предлага решение на базата на сесии. Сесия - набор от параметри и стойности, които идентифицират уникално потребителя. Всяка сесия има свой уникален идентификатор, така че потребителят да е достатъчно, за да информира сървъра на идентификатора на сесията и сървъра "помни" всички детайли и историята на потребителски заявки.

В зависимост от настройките на сесията PHP могат да бъдат създадени ръчно или автоматично, когато първият потребител влезе. В повечето доставчици автоматично създаване сесии не е активирана за производителност и сигурност причини.

За да създадете нова сесия, трябва да се обадите session_start () функция без параметри, а след това на разположение в световен мащаб масив $ _SESSION и бисквитките в браузъра на потребителя, ще PHPSESSID елемент.

Сесията започва веднага, а всички многократни призиви session_start () само да доведе до предотвратяване на появата на "сесия вече е отворен, като отворите отново не е позволено.". За да проверите, съществува функцията специална функция session_id () session_start () дали вече дължи. Тази функция винаги се връща низ с идентификационния номер на сесията, но ако на сесията все още не съществува - низ ще бъде празна.

Тази техника е много полезно, когато скрипта ви свързва други скриптове, които също могат да бъдат причинени от session_start ().

За да се гарантира, че данните ви се съхраняват на сървъра, при навигиране между страниците, достатъчно, за да ги сложи в глобалния масив $ _SESSION. Например:

Понякога има ситуации, когато е необходимо да се регенерира идентификаторът на сесия. За тази функция цел session_regenerate_id (). Причина тя трябва да бъде след откриването на срещата:

Показани техника понякога се използва за защита на сайта от атака, атакуващият трябва да замени своя идентификационен номер на сесията на потребителското име с по-високи привилегии. Вземете идентичност на някой друг е почти невъзможно, но да се знае (слушане на подслушване, мрежа или използване на троянски коне) - възможно.

сесия на елементите може да бъде не само прости видове, но и масиви:

Сесията може да бъде затворен или унищожени. Закриване на сесията се случва, когато ти се обадя session_write_close () функция. В този случай, всички промени, направени в една сесия се съхраняват в кеша на диска. Ако трябва да се закрива заседанието и да изтриете всички негови данни - трябва да се обадите session_destroy () или session_unset (). Разликата между тях е, че session_unset () може да се използва в стария код не е на разположение, когато глобалната масив $ _SESSION.

Както можете да видите, работа с сесии е съвсем проста. Само не забравяйте, че количеството на данните, съхранявани в сесията, след като всички крайни и не е необходимо да се съхранява излишъка.