В различни конференции, посветени на програмиране в първият ми интересуват от такива теми, като "уеб-програмиране" и "Scripts". В по-голямата си част, за PHP въпроси в такива форуми е съвсем проста, изисква само общи познания за PHP, обаче, най-често задаваният въпрос в моя опит, е: "Какво е сесия в PHP и какво / как те могат да се хранят?". Бих искал да се изясни този въпрос веднъж завинаги.
От самото начало, PHP всичко се гръм и трясък, но веднага след като езикът започва да се създаде достатъчно големи проекти, разработчиците са изправени пред нов проблем - в PHP няма понятие за глобални променливи! Това означава, че тя изпълнява скрипт, изпращане на генерираната страница на клиента, както и всички ресурси, използвани от този сценарий са били унищожени. Ще се опитам да илюстрирам: Да предположим, че има две страници на една и съща площадка, на index.php и dothings.php. Източници за тази страница изглежда така:
$ A = "Бях помолен да index.php";
Ако следвате тези две скриптове, можем да видим надпис "Бях помолен да index.php" на първа страница и на втората страница е празен.
Аз няма да отида в технологичните аспекти на заседанията на механизма на устройството и ще опише само как се работи с сесии в PHP.
Как да работим с сесии?
Ако тествате примери от статията (или вашите скриптове) по всяка търговска хостинг, проблеми с работата на сесиите не трябва да бъде. Ако все пак се създаде вашия сървър (без значение дали той е истински сървър, или емулатор), може да се появи съобщение за грешка, това съдържание:
"Внимание: отворена (/ Var / щат / PHP / sess_6f71d1dbb52fa88481e752af7f384db0, O_RDWR) не успя: Няма такъв файл или директория (2)."
Това просто означава, че сте правилно конфигуриран PHP. Може ли да реши този проблем, като напишете правилния начин (в съществуваща директория) за съхранение на сесии във файла php.ini и да рестартирате сървъра.
Всеки скрипт, който ще използва променливи (данни) от заседанията трябва да съдържа следния ред:
Тази команда казва на сървъра, който тази страница се нуждае от всички променливи, които са свързани с определен потребител (браузър). Сървърът е на peremnnye (от файл или от база данни) и ги прави достъпни. Това е много важно, за да отворите сесия преди каквито и да било данни, ще бъде изпратено до потребителя; На практика това означава, че функцията session_start (), е желателно да се предизвика самото начало на страницата, като този:
След сесията, можете да настроите глобални променливи. Това е проста: обадете session_register функция ( "var_name '); и променливата $ var_name е достъпно на всички страници, които използват сесия. За пример програма от нулата с, както е посочено в началото на статията:
// задаване на променливата
$ A = "Бях помолен да index.php";
// регистрира променлива с открито заседание
// важна променлива име преминал функция session_register ()
В началото на файла (в логична последователност, разбира се), първата версия на сценария (index.php) произвежда до следния резултат:
Всичко ОК. Сесията е зареден! Да вървим, нека да видим какво има:
Втори (dothings.php) ето го:
Бях помолен да index.php
променлива $ А, сега е на разположение на всички страници от сайта, който стартира сесията.
Други полезни функции за работа с сесии:
session_unregister (низ) - Session <забывает> предварително определена стойност на глобална променлива;
session_destroy () - сесия се унищожават (например, ако потребителят напуска системата, като натиснете <выход>);
session_set_cookie_params (вътр през целия живот [, низ пътя [, низ домейн]]) - с помощта на тази функция можете да зададете колко дълго воля <жить> сесия, задавайки unix_timestampopredelyayuschy време <смерти> сесия. По подразбиране, на сесията <живёт> нагоре, докато клиентът се затваря прозореца на браузъра.
Сега е ред практически механизъм за кандидатстване сесии. Нека да разгледаме няколко сравнително лесно и в същото време полезни примери.