Простая авторизация на PHP.

В этой статье мы напишем очень простую авторизация на web странице. Мы не буде использовать базы данных и т.д. Все будет очень лаконично и просто.

Допустим у нас есть страница index.php на которую могут заходить только авторизованные пользователи. Для ограничения доступа мы будем проверять есть ли сессии для этого пользователя или если проще, авторизован пользователь. Создадим файл и запишем в него такой код :

<?php
session_start();
if($_SESSION['admin'] != "admin"){
header("Location: login.php");
exit;
}
?>
Вы авторизованы !!!

session_start(); # Открыли сессию , обязательно условие при работе с сессиями.

header(«Location: login.php»); # производим редирект пользователя на страницу login.php

exit; # После функции header() обязательно завершаем выполнение скрипта при помощи функции exit(). Данный код очень просто, если у нас в массиве $_SESSION нету переменой admin равной значению ‘admin’ перенаправить на страницу авторизации.

Ну и за одно создадим страницу авторизации login.php :

<br /> 
<form method="post">
Username: <input type="text" name="user" /> <br />
Password: <input type="password" name="pass" /> <br />
<input type="submit" name="submit" value="Login" />
</form>

Простой html код создания формы с двумя полями и кнопкой отправки, метод передачи данных post. Если мы все правильно сделали , то при попытки зайти на index.php нас должно выкидывать на форму авторизации.

Следующим этапом мы добавим обработчик данных из формы. Который будет принимать и сравнивать данные из формы. В этом примере у нас будет только один пользователь и хранить логин\пароль мы будем прям в этом же файле. Пароль будет в зашифрованном виде c помощью функции md5(). А что бы узнать узнать хеш пароля попробуйте выполнить код echo md5(‘mypass’); 😉 Делать это мы будем по условию — только в том случае, если нажата кнопка формы.

У кнопки есть имя («submit»), а данные мы передаем методом post. Соответственно, мы можем просто проверить, существует ли элемент submit в массиве $_POST. Если есть — кнопка была нажата, и мы будем выполнять действия по проверке присланных данных, иначе — ничего делать не будем.

В файл формы (login.php) в самое начало добавим код :

<?php
session_start();
$users = 'admin';
$pass = 'a029d0df84eb5549c641e04a9ef389e5';
 if($_POST['submit']){
 if($users == $_POST['user'] AND $pass == md5($_POST['pass']))
{
 $_SESSION['admin'] = $users;
 header("Location: index.php");
 exit;
 }
else echo '<p>Логин или пароль неверны!</p>';
} 
?>  


Когда создается сессия, PHP генерирует уникальный идентификатор, который представляет собой случайную строку.Все переменные сессии хранятся на сервере во временном файле.
Сервер отправляет на компьютер пользователя куки, называемые PHPSESSID, для хранения строки уникального идентификатора сессии.
Когда пользователь закрывает браузер, сессия PHP закрывается автоматически. Иначе сервер завершит сессию по истечении заданного периода времени.

В заключение мы сделаем ссылку для удаления всех данных сессии (закрыть сессию). Мы передаем один параметр — do и при этом присвоим ему значение «logout». А в блок PHP добавим проверку значения элемента do из массива $_GET. Если оно будет равно строке «logout» — мы просто удалим сессию с помощью session_destroy() . Откроем файл index.php и добавим код :

 <a href="index.php?do=logout">Logout</a> 
Вставим этот код сразу после  session_start(); для проверки полученных данных. 

if($_GET['do'] == 'logout'){
unset($_SESSION['admin']);
session_destroy();
}