Возможность входа в защищенную зону сохраняется в течение всего сеанса работы окна браузера,
но после того, как вы его закроете, войти снова можно будет лишь набрав имя пользователя и пароль.
То есть, воспользовавшись вашим компьютером, незаконных действий от вашего имени совершить невозможно.
Чем еще хорош этот метод? Он не принимает никаких переменных со сторонних серверов и после трехкратного
неверного ввода пароля вам придется обновлять страницу, что затрудняет взлом системы подбором.
А выглядит это вот так:
< ?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.
Вот вы и защищены. От себя могу еще добавить, что паролирование таким способом лично мне кажется весьма удобным и надежным.
Постоянные ссылки
При копировании ссылка на TeaM RSN обязательна!
Оставить комментарий
Вы должны войти, чтобы оставить комментарий.