PHP в деталях



         

Пароль на страницу. Часть 5. Сессии - часть 2


Теперь о том, какими функциями мы пользуемся.

session_start(). Запускает сам механизм сессий. От пользователя должна быть переменная и соответствующий ей файл. Если нет файла, он создаётся, и сессия запускается с нуля. Если нет ни файла, ни переменной, то генерируется переменная (например, посылается заголовок с кукой) и создаётся файл.

session_register(имя1, имя2, имя3...). Указание, какие переменные запомнить в файле по окончании работы скрипта. После того как пользователь перейдёт к другой странице, можно запустить механизм сессий, и после вызова данной функции переменные будут доступны.

session_destroy(). Удаляет файл данных сессии (при использовании кук надо удалять их вручную, выставив пустую куку: "setcookie(session_name())").

session_end(). Если после авторизации данные о пользователе менять не надо, лучше сразу "выключить за собой свет" ? закрыть файл и освободить доступ к нему.

session_set_cookie_params(жизнь, путь, домен). Установка параметров куки с идентификатором сессии (по умолчанию кука выставляется на корень сервера и на 0 секунд ? до закрытия браузера).

Пока всё. Подробно про сессии будут отдельные выпуски. Пока опишу механизм авторизации и идентификации пользователя при помощи сессий.

Итак, имеем три файла ? вход (login), проверка (auth) и выход (logout).

// вырезка всех нежелательных символов

$login = preg_replace("/[^\w_\.\-]/", "", $HTTP_POST_VARS["login"]);

$pass = trim($HTTP_POST_VARS["pass"]);

// проверка переменных

if (strlen($login)==0 strlen($pass)==0)

  $error = "Введите логин и пароль";

else {

  // проверка логина и пароля

  $user_result = mysql_query("SELECT * FROM user WHERE login='$login' AND pass='". md5($pass). "'");

  /* если возникла ошибка в базе (например, пользователь всунул в сессию дли-и-инную переменную, которую база переваривать не захотела) или получилась не одна строка, отфутболиваем пользователя */




Содержание  Назад  Вперед