Как сделать авторизацию?

3 ноября 2014 г. Просмотров: 790
Нередко бывает, что необходимо разделять посетителей на желательных и нежелательных, и давать возможность видеть некоторые страницы сайта только тем, кто имеет логин и пароль. Как сделать это, например, на серверном скриптовом языке PHP?
Создать сайт самостоятельно с Wix.com

Инструкция

  • Давайте организуем самый простой способ защиты страниц от неавторизованных посетителей. Носителем информации о том авторизован ли посетитель будут сессии. Сессия - это аналог кук в браузере, с той только разницей, что создаются они не у нас в компьютере, а на сервере. И используются они для того же, для чего и куки – для хранения разной информации о нас пока мы ходим от страницы к странице одного сайта. Когда мы закрываем браузер, то сервер уничтожает эту сессию, а при следующем нашем заходе создает новую. Этот серверный механизм мы и используем для того чтобы записывать в сессию авторизовался ли уже пользователь или нет. Читая эту информацию, когда посетитель запрашивает страницу, php-скрипт будет либо открывать доступ к запароленным страницам, либо предлагать ввести логин и пароль.
  • Шаг 1: Создаем страницу для ввода логина и пароля. HTML-код формы авторизации в самом простом варианте может выглядеть так:

    Логин:

    Пароль:

    Сюда же (в самое начало файла) добавим 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 "

    Логин или пароль неверны!

    ";Весь код, который надо сохранить в файл с именем login.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 "

    Логин или пароль неверны!

    ";

    ?>

    Логин:

    Пароль:

  • Шаг 2: Создаем блок авторизации - отдельный файл, который будет подключаться к каждой странице, нуждающейся в защите паролем. Этот файл будет содержать только php-код, поэтому расширение у него будет "php", а имя ему дадим по традиции для таких файлов - "auth", то есть "auth.php". И здесь тоже сразу после открывающего тега session_start();Все переменные, которые хранятся в сессии, мы можем прочесть из суперглобального массива $_SESSION. Нам нужно проверить значение переменной "userName" - если посетитель еще не авторизовался, то ее не будет в массиве, и мы перенаправим его на страницу для ввода логина и пароля:if(!$_SESSION['authorized']){
  • header("Location: login.php");

    exit;

    }

    Весь код, который надо сохранить в файл auth.php будет выглядеть так:session_start();if(!$_SESSION['admin']){

    header("Location: enter.php");

    exit;

    }

    ?>

  • Шаг 3: после того, как сохраним эти файлы на сервере, останется во все php-страницы, которые нужно защитить от неавторизованных пользователей подключить блок авторизации. То есть в самое начало каждого php-файла надо будет вставить этот код:
  • require "auth.php";

    ?>

    А чтобы изменить пароль доступа нужно будет в файле login.php изменить значения этих переменных:

    $validName = 'Я свой!';

    $validPass = 'секретный пароль';

    $validName - логин, $validPass - пароль.

    Оцените статью!