Главная » Полезные статьи » Язык PHP » Простейшая авторизация для вашего сайта
Распечатать статью

Простейшая авторизация для вашего сайта

Web-мастерам, использующим в качестве движка для сайта что-либо собственноручно написанное рано или поздно надоедает обновлять сайт, редактируя файлы по FTP или работая напрямую с базой данных. И тогда начинается написание скриптов администрирования, которые бы позволили управлять сайтом в интерактивном режиме с приятным внешним видом и наконец-то сделали процесс обновления более приятным. Первый вопрос, который обычно возникает в таком случае — это вопрос авторизации — не будешь же давать возможность каждому, нашедшему на сайте административный раздел, творить все, что ему взбредет в голову. Сегодня мы с вами рассмотрим процесс написания простейшей авторизации.

Для начала несколько уточняющих моментов. Первое — пишем на PHP, так как это наиболее распространенный на сегодняшний день язык написания систем управления сайтами. И второе -я лично против самописных скриптов, отвечающих за сам ввод логина пароля. Поэтому не будем изобретать велосипед, т.е. собственный принцип авторизации, а воспользуемся стандартными возможностями.

Итак, будем пользоваться обычной аутентификацией — окном для ввода пароля, какое используется, например, на Rambler и множестве других сайтов.

Возможность входа в защищенную зону сохраняется в течение всего сеанса работы окна браузера, но после того, как вы его закроете, войти снова можно будет лишь набрав имя пользователя и пароль. То есть, воспользовавшись вашим компьютером, незаконных действий от вашего имени совершить невозможно. Чем еще хорош этот метод? Он не принимает никаких переменных со сторонних серверов и после трехкратного неверного ввода пароля вам придется обновлять страницу, что затрудняет взлом системы подбором.

А выглядит это вот так:

<?php if(!isset($PHP_AUTH_USER)) // пользователь неизвестен {   Header("WWW-Authenticate: Basic realm=\"Admin Center\"");   Header("HTTP/1.0 401 Unauthorized");   exit(); } else // пользователь известен, неизвестен пароль {   // введенный пароль   $password = "$PHP_AUTH_PW";   // просмотр базы для получения реального пароля   $link = mysql_connect($dbhost, $dbuser, $dbpasswd);   mysql_select_db($dbname);   $result=mysql_query("SELECT password FROM auth WHERE name=\"$PHP_AUTH_USER\"");   $row=mysql_fetch_array($result);   // проверка   if ($row==NULL)        // пользователя с таким именем нет в БД, выходим   {        Header("WWW-Authenticate: Basic realm=\"Admin Center\"");        Header("HTTP/1.0 401 Unauthorized");        exit();   }   else                   // пользователь с таким именем есть в БД, проверка пароля   {       $real_password="$row[password]";       if ($real_password!=$password)       {            Header("WWW-Authenticate: Basic realm=\"Admin Center\"");            Header("HTTP/1.0 401 Unauthorized");            exit();       }   } } ?>

Введенный пользователем логин хранится в переменной $PHP_AUTH_USER, пароль — в $PHP_AUTH_PW. Кстати, обратите внимание на проверку существования записи пользователя с таким именем в БД — это критический момент, который учитывать весьма важно. В случае, если такой проверки не будет, это приведет к плачевным результатам — $row[password] будет равно нулю, то есть введя несуществующее имя пользователя и пустой пароль можно будет попасть в защищенную зону.

Между инструкциями Header(«HTTP/1.0 401 Unauthorized»); и exit(); вставляем что угодно — от простой фразы о том, что сюда нельзя до предложения куда-нибудь сходить, слетать, сбегать, сползать и так далее. Да, чуть не забыл — в переменных $dbhost, $dbuser, $dbpasswd и $dbname хранятся данные, обеспечивающие доступ к базе и имя базы.

Подобный код необходимо вставить на каждую страницу защищенной зоны, например, через include.

Вот вы и защищены. От себя могу еще добавить, что паролирование таким способом лично мне кажется весьма удобным и надежным.

Источник: internet-technologies.ru

Вы можете оставить комментарий, или обратную ссылку на Ваш сайт.

Оставить комментарий

Похожие статьи