и пароля, работа тоже прекращается
session_start();
session_register("user");
/* если случайно в массиве нет логина и пароля, работа тоже прекращается ("ничего не знаем, мы вам их давали") */
if (!isset($user["login"]) !isset($user["pass"]))
$session_error = true;
};
/* если пользователю до сих пор удалось геройски избежать ошибок, делается проверка через базу так же, как и на входе. */
if (!$session_error) {
$check_result = mysql_query("SELECT uid FROM user WHERE login='{$user[login]}' AND pass='{$user[pass]}'");
if (mysql_error() @mysql_num_rows($user_result) != 1)
$session_error = true;
};
// если была какая-то ошибка, то
if ($session_error) {
// уничтожаем данные сессии
session_destroy();
// уничтожаем куку, если она была
if (!isset($HTTP_COOKIE_VARS[session_name()]))
setcookie(session_name(),"","/");
/* отправляем пользователя на вход, с возможностью вернуться на запрошенный адрес */
header("Location: /login.php?return=$REQUEST_URI");
// прекращаем работу
exit();
};
mysql_free_result($check_result);
Пользователь проверен и в массиве $user ? все данные о нём, можно, например, поприветствовать его по имени-отчеству:
<?
include("auth.inc");
?><html>
<head><title><? print ("Здравствуйте, {$user[fname]} {$user[sname]}!"); ?></title></head>
<body>
[skip]
И выход:
if(isset($HTTP_COOKIE_VARS[session_name()])) {
// запуск механизма сессий
session_start();
// удаление файла
session_destroy();
// удаление куки
setcookie(session_name());
};
// выход со страницы
header("Location: /login.php");
Пара замечаний: закрываемая паролем часть в данном примере - весь сервер (например, service.firm.ru), для закрытия директории нужно исправить пути. Вместо
PHPSESSID используется
session_name(), чтобы можно было свободно менять имя идентификатора. Кстати, на одном физическом сервере можно делать разные имена идентификаторов сессий - достаточно в нужную часть положить файл .htaccess со строкой
php_value session.name "ABRACADABRA".
На этом всё. Ждите статьи со сравнением приведённых способов авторизации (свои куки, сессии и 401-й код) и нескольких статей по сессиям.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий