Рассмотрим скрипт с авторизацией пользователя, построенного на одном файле. Используется механизм сессии, для которого в браузере должен быть включён механизм приёма cookie.
session_start(); //вызывается до вывода любого контента
function check_user () { //проверка авторизации пользователя
if (!isset($_SESSION['my_inside'])) return false;
else return $_SESSION['current_user'];
}
function form() { //вывод формы для авторизации
echo '<form method="post">Логин: <input type="text" size="33" maxlength="32" name="login">
Пароль: <input type="password" size="33" maxlength="32" name="pass">
<input type=submit value="OK"></form>';
}
if (isset($_GET['off'])) { //сделан запрос на выход из сессии?
if (check_user()) $_SESSION = array();
}
if (!check_user()) { //если не авторизован
if (!isset($_POST['login']) or !isset($_POST['pass'])) { echo '<p>Авторизуйтесь</p>'; form(); exit; }
//если переданы логин и пароль из формы:
$login = trim(htmlspecialchars($_POST['login']));
//в реальности нужно получить $login и $pass по безопасному протоколу HTTPS
$pass = md5(trim(htmlspecialchars($_POST['pass'])));
//пароль нужно зашифровать для сравнения с зашифрованным паролем из БД
$login0 = 'Admin'; $pass0=md5('123'); //в реальности - получить из БД зашифрованный пароль для $login
if ($login==$login0 and $pass==$pass0) { //вошли в систему
$_SESSION['my_inside']=1; //"секретная переменная" в сессии, поменяйте ей имя
$_SESSION['current_user']=$login; //логин в сессии, чтобы различать пользователей между собой
}
else { //не вошли, вывести сообщение и форму
echo '<p>Неверный логин или пароль!</p>'; form(); exit;
}
}
//Код для авторизованного пользователя:
echo '<p>Вы авторизованы; <a href="auto2.php?off">выйти</a></p>';