Суббота, 18.05.2024, 09:15
Бизнес форум о заработке в интернете
InstaForex
Новые темы форума:
  • ТOP 10 лучших онлайн казино (11)
  • Как избежать обмана при обмене валют (1)
  • Платежная система Яндекс Деньги (2)
  • Приветствую Вас Гость | RSS
    [ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
    • Страница 1 из 1
    • 1
    Бизнес форум о заработке в интернете » Для вебмастера » Вебмастеринг » Простейшая авторизация для вашего сайта
    Простейшая авторизация для вашего сайта
    tagДата: Среда, 07.08.2013, 20:02 | Сообщение # 1
    Высшее звено форума
    Группа: Администраторы
    Сообщений: 2105
    Репутация: 100
    Статус: Offline
    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.

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

    Будем благодарны, если Вы поделитесь этим материалом в социальных сетях:



    Сервис автоматического копирования сделок на Форекс Share4you
     
    Бизнес форум о заработке в интернете » Для вебмастера » Вебмастеринг » Простейшая авторизация для вашего сайта
    • Страница 1 из 1
    • 1
    Поиск:

    Copyright by TAG © 2013 - 2024