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

Нередко бывает, что необходимо разделять посетителей на желательных и нежелательных, и давать возможность видеть некоторые страницы сайта только тем, кто имеет логин и пароль. Как сделать это, например, на серверном скриптовом языке PHP?
Инструкция
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>
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;

}

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

<?php

require "auth.php";

?>

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

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

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

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

Совет 2: Как сделать авторизацию на сайте

Большинство сайтов в интернете предоставляют публичный доступ к содержащейся на них информации. Общедоступные страницы сайтов может просмотреть любой желающий. Однако к некоторым разделам сайтов необходимо предоставлять ограниченный доступ. Например, к страницам панели администрирования. Большинство CMS общего назначения, движков форумов и блогов, имеют встроенные средства авторизации и разграничения доступа. Но если ваш ресурс достаточно прост и не управляется мощной CMS, а ограничивать доступ надо, то придется подумать над тем, как сделать авторизацию на сайте. К счастью, для этого имеются простые средства.
Вам понадобится
  • Сайт, функционирующий под управлением сервера apache. Доступ к сайту по ssh. Доступ к сайту по ftp. Конфигурация сервера, разрешающая пользовательские файлы .htaccess.
Инструкция
1
Подключитесь к серверу по ssh. Если у вас установлен консольный клиент, наберите в консоли команду "ssh <имя_пользователя>@<адрес_сервера>", где <имя_пользователя> - имя вашей учетной записи на сервере, а <адрес_сервера> - символическое имя, либо IP-адрес сервера. Команда может выглядеть так: "ssh vic@receptoman.ru". После запроса введите пароль от своей учетной записи. Под windows можно воспользоваться альтернативными программами-клиентами. Одна из таких программ - putty.
Как сделать <strong>авторизацию</strong> на <b>сайте</b>
2
Перейдите в корневой каталог сайта на сервере. Это каталог, не доступный из web. Как правило, в нем находится подкаталог public_html, в которое помещено содержимое сайта, доступное для просмотра через интернет. Используйте команду cd. Если вы не помните полный путь к папке, используйте команду ls для получения содержимого текущего каталога и совершайте поэтапные переходы.
Как сделать <strong>авторизацию</strong> на <b>сайте</b>
3
Создайте файл паролей в текущем каталоге. Выполните команду вида "htpasswd -c <имя_файла_паролей> <имя_пользователя>". Здесь <имя_файла_паролей> - корректное имя файла, в который будут помещены данные для авторизации, а <имя_пользователя> - один из идентификаторов пользователей, которые будут иметь доступ к разделу сайта. Команда может выглядеть так: "htpasswd -c .pwd User1". После ввода команды будет запрошен пароль для пользователя с введенным именем. После ввода пароля будет запрошено его подтверждение.
Как сделать <strong>авторизацию</strong> на <b>сайте</b>
4
Проверьте существование файла паролей. Выполните команду "ls --all". В отображенном списке содержимого текущего каталога должно присутствовать имя файла паролей.
Как сделать <strong>авторизацию</strong> на <b>сайте</b>
5
Добавьте еще пользователей, которым будет разрешен доступ. Выполняйте команду вида "htpasswd <имя_файла_паролей> <имя_пользователя>". Значение параметра <имя_файла_паролей> должно быть такое же, как при создании файла паролей. Например, добавить в файл с именем .pwd данные для пользователя user2, можно командой "htpasswd .pwd user2". Пароли и подтверждения паролей будут запрошены в интерактивном режиме.
Как сделать <strong>авторизацию</strong> на <b>сайте</b>
6
Отключитесь от сервера. Введите команду exit и нажмите Enter.
Как сделать <strong>авторизацию</strong> на <b>сайте</b>
7
Измените файл .htaccess. Подключитесь к серверу при помощи программы FTP-клиента. Зайдите в каталог, соответствующий разделу сайта, для которого необходима авторизация. Если там есть файл с именем .htaccess, загрузите его на свой компьютер. Если такого файла нет, создайте его на своем компьютере. Добавьте в начало файла .htaccess следующие строки:AuthType Basic
AuthName "приветствие"
AuthUserFile "путь_к_файлу_с_паролями"
Require valid-userВместо слова "приветствие" введите любую фразу. Она будет отображаться в диалоге запроса данных пользователя в браузере. Вместо значения "путь_к_файлу_с_паролями" введите полный путь к файлу с данными для авторизации на сервере. Этот путь, к примеру, может быть таким: "/home/www/vic/domains/receptoman.ru/.pwd". Сохраните файл .htaccess. Загрузите его на сервер.
Как сделать <strong>авторизацию</strong> на <b>сайте</b>
8
Проверьте работу системы авторизации. Зайдите в раздел сайта, для которого был модифицирован файл .htaccess. Если все работает корректно, браузер отобразит диалог с запросами данных для авторизации.
Как сделать <strong>авторизацию</strong> на <b>сайте</b>
Видео по теме
Обратите внимание
Обязательно убедитесь, что каталог, в котором находится файл паролей, не доступен через web. В противном случае злоумышленник сможет завладеть этим файлом. Пароли в файле зашифрованы. Но, имея имена пользователей и хеши паролей, гораздо проще подобрать данные для авторизации.
Совет полезен?
В административной панели хостинга может иметься функция для более быстрого паролирования директорий. Вследствие ее применения также будет создан файл паролей и модифицирован файл .htaccess.
Источники:
  • Аутентификация, авторизация и контроль доступа в Apache
Видео по теме
Обратите внимание
Разумеется, это очень упрощенный вариант авторизации, который можно использовать как защиту от нежелательных посетителей, но не от взломщиков. Более продвинутая система авторизации требует более углубленных знаний в области интернет-программирования.
Поиск
Совет полезен?
Добавить комментарий к статье
Осталось символов: 500