Примеры работы с сессиями PHP4

Автор статьи: OneZero
Сайт Автора: getinfo.ru
E-mail Автора: нет
Дата публикации: 11.11.2005


Приступим к работе с сессиями

Для начала решим, как правильно должны начинаться наши скрипты и что мы собираемся хранить в сессиях. Предложение 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); (разумеется, при этом человек не увидет приветствие).