PHP: простейшая авторизация одним файлом
В блоге есть более подробные материалы по теме, цель этой заметки - показать пример скрипта с авторизацией пользователя, построенного буквально "на одном файле". Используется механизм сессии, для которого, вообще говоря, в браузере должен быть включён механизм приёма cookie-файлов.
Комментариями в коде описаны основные действия и отличия примера от реального скрипта, в котором учётную запись пользователя нужно получить из базы данных, такой код есть в архиве по первой ссылке.
Выполнить это можно, например, на локальном хосте в Denwer как файл типа .php
<?php 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>'; ?>
Ну и стандартную функцию session_start
мы здесь довольно грубо вызываем даже тогда, когда пользователь ещё не авторизовался. В реальности она нужна по тем ветвям скрипта, где мы что-то делаем с массивом $_SESSION
.
Можно обойтись без сессий и использовать авторизацию "чисто через куки", как здесь.
03.02.2019, 12:41 [5012 просмотров]