Инструкция
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 - пароль.