Инструкция
1
Давайте организуем самый простой способ защиты страниц от неавторизованных посетителей. Носителем информации о том авторизован ли посетитель будут сессии. Сессия - это аналог кук в браузере, с той только разницей, что создаются они не у нас в компьютере, а на сервере. И используются они для того же, для чего и куки – для хранения разной информации о нас пока мы ходим от страницы к странице одного сайта. Когда мы закрываем браузер, то сервер уничтожает эту сессию, а при следующем нашем заходе создает новую. Этот серверный механизм мы и используем для того чтобы записывать в сессию авторизовался ли уже пользователь или нет. Читая эту информацию, когда посетитель запрашивает страницу, php-скрипт будет либо открывать доступ к запароленным страницам, либо предлагать ввести логин и пароль.
Шаг 1: Создаем страницу для ввода логина и пароля. HTML-код формы авторизации в самом простом варианте может выглядеть так:
<form action="" method="POST">
Логин: <input type="text" name="userName" /><br />
Пароль: <input type="password" name="userPass" /><br />
<input type="submit" name="submit" value="Войти" />
</form>
Сюда же (в самое начало файла) добавим php-код, который будет проверять правильность введенного посетителем логина и пароля. В его начале напишем:
session_start();
Эта команда стартует новую сессию, если ее еще не создано для этого посетителя.
Затем проверим, есть ли в сессии переменная с именем 'userName' - в ней будет храниться имя, если посетитель уже был авторизован. Если такая переменная есть - перенаправим посетителя на главную страницу (index.php) и закончим выполнение этого php-скрипта:
if($_SESSION['userName']){
header("Location: index.php");
exit;
}
Весь остальной код будет выполняться только если пользователь еще не ввел правильного логина и пароля. Укажем которые логин и пароль надо считать правильными:
$validName = 'Я свой!';
$validPass = 'секретный пароль';
Затем проверим - соответствуют ли отправленные из формы значения правильным. Поскольку в форме мы указали метод передачи данных POST, то и читать их следует из суперглобальной переменной $_POST:
if($_POST['userName'] == $validName && $_POST['userPass'] == $validPass) {
$_SESSION['userName'] = $validName;
header("Location: index.php");
exit;
}
Здесь код в фигурных скобках {} будет выполняться при правильных значениях логина и пароля. В строке $_SESSION['userName'] = $validName; ма записываем в сессию переменную с именем 'userName' содержащую логин теперь уже авторизованного пользователя. Это и будет метка о том, что доступ ему открыт повсюду до тех пор, пока действительна его текущая сессия.
А на случай если в форму введены неправильные данные добавим соответствующее сообщение:
else echo "<br />Логин или пароль неверны!<br />";
Весь код, который надо сохранить в файл с именем login.php будет выглядеть так:
<?php
session_start();
if($_SESSION['userName']){
header("Location: index.php");
exit;
}
$validName = 'Я свой!';
$validPass = 'секретный пароль';
if($_POST['userName'] == $validName && $_POST['userPass'] == $validPass) {
$_SESSION['userName'] = $validName;
header("Location: index.php");
exit;
}
else echo "<br />Логин или пароль неверны!<br />";
?>
<br />
<form action="" method="POST">
Логин: <input type="text" name="userName" /><br />
Пароль: <input type="password" name="userPass" /><br />
<input type="submit" name="submit" value="Войти" />
</form>
Шаг 1: Создаем страницу для ввода логина и пароля. HTML-код формы авторизации в самом простом варианте может выглядеть так:
<form action="" method="POST">
Логин: <input type="text" name="userName" /><br />
Пароль: <input type="password" name="userPass" /><br />
<input type="submit" name="submit" value="Войти" />
</form>
Сюда же (в самое начало файла) добавим php-код, который будет проверять правильность введенного посетителем логина и пароля. В его начале напишем:
session_start();
Эта команда стартует новую сессию, если ее еще не создано для этого посетителя.
Затем проверим, есть ли в сессии переменная с именем 'userName' - в ней будет храниться имя, если посетитель уже был авторизован. Если такая переменная есть - перенаправим посетителя на главную страницу (index.php) и закончим выполнение этого php-скрипта:
if($_SESSION['userName']){
header("Location: index.php");
exit;
}
Весь остальной код будет выполняться только если пользователь еще не ввел правильного логина и пароля. Укажем которые логин и пароль надо считать правильными:
$validName = 'Я свой!';
$validPass = 'секретный пароль';
Затем проверим - соответствуют ли отправленные из формы значения правильным. Поскольку в форме мы указали метод передачи данных POST, то и читать их следует из суперглобальной переменной $_POST:
if($_POST['userName'] == $validName && $_POST['userPass'] == $validPass) {
$_SESSION['userName'] = $validName;
header("Location: index.php");
exit;
}
Здесь код в фигурных скобках {} будет выполняться при правильных значениях логина и пароля. В строке $_SESSION['userName'] = $validName; ма записываем в сессию переменную с именем 'userName' содержащую логин теперь уже авторизованного пользователя. Это и будет метка о том, что доступ ему открыт повсюду до тех пор, пока действительна его текущая сессия.
А на случай если в форму введены неправильные данные добавим соответствующее сообщение:
else echo "<br />Логин или пароль неверны!<br />";
Весь код, который надо сохранить в файл с именем login.php будет выглядеть так:
<?php
session_start();
if($_SESSION['userName']){
header("Location: index.php");
exit;
}
$validName = 'Я свой!';
$validPass = 'секретный пароль';
if($_POST['userName'] == $validName && $_POST['userPass'] == $validPass) {
$_SESSION['userName'] = $validName;
header("Location: index.php");
exit;
}
else echo "<br />Логин или пароль неверны!<br />";
?>
<br />
<form action="" method="POST">
Логин: <input type="text" name="userName" /><br />
Пароль: <input type="password" name="userPass" /><br />
<input type="submit" name="submit" value="Войти" />
</form>
2
Шаг 2: Создаем блок авторизации - отдельный файл, который будет подключаться к каждой странице, нуждающейся в защите паролем. Этот файл будет содержать только php-код, поэтому расширение у него будет "php", а имя ему дадим по традиции для таких файлов - "auth", то есть "auth.php". И здесь тоже сразу после открывающего тега <?php должна идти инструкция стартовать сессию:
session_start();
Все переменные, которые хранятся в сессии, мы можем прочесть из суперглобального массива $_SESSION. Нам нужно проверить значение переменной "userName" - если посетитель еще не авторизовался, то ее не будет в массиве, и мы перенаправим его на страницу для ввода логина и пароля:
if(!$_SESSION['authorized']){
header("Location: login.php");
exit;
}
Весь код, который надо сохранить в файл auth.php будет выглядеть так:
<?php
session_start();
if(!$_SESSION['admin']){
header("Location: enter.php");
exit;
}
?>
session_start();
Все переменные, которые хранятся в сессии, мы можем прочесть из суперглобального массива $_SESSION. Нам нужно проверить значение переменной "userName" - если посетитель еще не авторизовался, то ее не будет в массиве, и мы перенаправим его на страницу для ввода логина и пароля:
if(!$_SESSION['authorized']){
header("Location: login.php");
exit;
}
Весь код, который надо сохранить в файл auth.php будет выглядеть так:
<?php
session_start();
if(!$_SESSION['admin']){
header("Location: enter.php");
exit;
}
?>
3
Шаг 3: после того, как сохраним эти файлы на сервере, останется во все php-страницы, которые нужно защитить от неавторизованных пользователей подключить блок авторизации. То есть в самое начало каждого php-файла надо будет вставить этот код:
<?php
require "auth.php";
?>
А чтобы изменить пароль доступа нужно будет в файле login.php изменить значения этих переменных:
$validName = 'Я свой!';
$validPass = 'секретный пароль';
$validName - логин, $validPass - пароль.
<?php
require "auth.php";
?>
А чтобы изменить пароль доступа нужно будет в файле login.php изменить значения этих переменных:
$validName = 'Я свой!';
$validPass = 'секретный пароль';
$validName - логин, $validPass - пароль.
Видео по теме
Обратите внимание
Разумеется, это очень упрощенный вариант авторизации, который можно использовать как защиту от нежелательных посетителей, но не от взломщиков. Более продвинутая система авторизации требует более углубленных знаний в области интернет-программирования.