Примеры работы с сессиями PHP4 |
||||
---|---|---|---|---|
Приступим к работе с сессиями Для начала решим, как правильно должны начинаться наши скрипты и что мы собираемся хранить в сессиях. Предложение N1 - несколько строк, которые будут отвечать за правильный запуск сессий и обработки новых пользователей, которым надо записать какие-то переменные для начала пработы, хорошо бы поместить в отдельный файл. Итак, файл index.php будет главным на сайте, а описанные команды мы поместим в default.php. Предложение N2 - наша программа будет содержать много функций, в которых иногда будет происходить доступ к переменным сессий, следовательно последние надо будет делать глобальными в функциях. Если у нас будет десяток переменных, то нам придется писать большую строку для объявления переменных глобальными. Если же мы зарегистрируем в сессиях только одну переменную-массив с коротким названием, то нам будет легко ее прописывать глобальной и легко обращаться. Итак, предложение 2 - используем переменную $s, все необходимые параметры пишем в $s как в массив: $s[название]=значение. Что записывать всем пользователям по умолчанию? Давайте, при входе нового посетителя, будет объявлять переменную $s[start], в которой запишим время входа пользователя. Чтобы получить текущее время (число) используют time(). Больше ничего делать с новыми посетителями не надо. На главной страние мы будем выводить фразу "Добро пожаловать!", если человек впервые тут и фразу "Вы пришли к нам ?? секунд назад". Подсчитать кол-во секунд весьма просто: time() - текущее время, $s[start] - уже прошедшее (когда мы произвели запись $s[start]). Таким образом, надо от большего отнять меньшее. Пишем эту программу. Файл default.php: <? // до первой строки с "<?" вы не должны ставить пустые строки или пробелы // данный файл должен начинаться с "<?" // в тексте программ возможно любое кол-во пустых строк unset($s); // удаление переменной $s, если она вдруг была объявлена // чтобы никто не мог ничего через URL ничего записать // например, так: index.php?s[start]=... // сессии еще не запустились, поэтому мы удаляем не ту переменную $s, // что появиться после следующей строки session_start(); // включить поддержку сессий. Если человек новый, ему // выдадут случайный идентификатор. Но мы про это пока не // думает, а сразу приступаем к использованию сессии session_register("s"); // зарегистрировать переменную $s как переменную сессии // обратите внимание - пишем "s" в функции, а не $s // с этого момента вся информация в будущем массиве $s будет сохраняться ?> Файл index.php (или любой файл вашего будущего сайта): <? // до первой строки с "<?" вы не должны ставить пустые строки или пробелы include("default.php"); // подключаем файл default.php из текущего каталога (из того же, где и сам // index.php лежит) if (!isset($s['start'])) { // если выполнится это условие, т.е. переменной $s[start] еще несуществует, // то мы может произвести какие-то действия, пусть даже самые простые. // Используем переменную $s[start] как флаг и отсчет времени $s['start']=time(); // в переменную запишеться ненулевое положительное число // больше данный IF не выполниться, т.к. теперь и далее переменная // $s[start] существует (и дополнительно хранит полезное число) echo "Добро пожаловать на наш сайт!"; // выводим сообщение в знак того, что данный посетитель пришел // пришел впервые } else { // если выполниться это условие, то это старый посетитель // выводим для него соответствующую фразу и не производим // установку переемнных по умолчанию echo "Вы впервые пришли на наш сайт ".(time()-$s['start'])." секунд назад"; } ?> Обратите внимание, что программа при выключенных куках работать не будет. Для его работоспособности надо при первом обращении пользователя сделать header("Location: $PHP_SELF?".SID); (разумеется, при этом человек не увидет приветствие). |