Показать сообщение отдельно

  #4  
Старый 30.07.2008, 20:38
5triker
Участник форума
Регистрация: 05.04.2007
Сообщений: 150
Провел на форуме:
771228

Репутация: 77
По умолчанию

Цитата:
В-третьих, файлом .htaccess Вы сможете создать "закрытую зону", в которую можно попасть используя пароль и логин. Например, папка для служебного пользования или администрирования. В этом случае, заведем на сервере дополнительную папку, назовем ее passwd (http://ваш_сайт.ru/passwd/). Создадим в ней временный файл test.php, из которого мы узнаем полный путь до этой папки на сервере, записав в него такие строки:
<?php
$path = getcwd ();
$path = str_replace ('\\', '/', $path);
echo $path;
?>


При запуске test.php (http://ваш_сайт.ru/passwd/test.php) узнаем
полный_путь_до_passwd_на_серве е
После этого, запишем в passwd файл .htpasswd с данными логина и пароля через ":", выглядеть .htpasswd будет так:

loginassword

Так будет выглядеть Ваш файл с парой "логин:пароль" в Windows, то есть просто записали в файл с паролями Ваши пароль и логин, и больше ничего не надо. Но на системах Linux его надо зашифровать. То есть, как появляется в базе новый пользователь с парой "логин:пароль" на системах Unix? Там администратор вводит в командную строку: htpasswd -nb userfiile login password. После этого, в файле userfiile появляется пользователь с именем Login и зашифрованным паролем типа d8bny9xqDGvHc. Он появляется после автоматической шифрацией его сервером Apache. Тогда строка loginassword в .htpasswd:

login:d8bny9xqDGvHc

При авторизации сервер поймет, что это пользователь login с паролем password. То есть, покажем как шифруется пароль сервером Apache:
<?php
$password = "ваш_пароль";
$path_t = substr ( md5 ( uniqid ($password)), 0, 3). "-56";
$password = crypt ($password, $path_t);
?>


На выходе такого скрипта и получим такой зашифрованный пароль, какой должен быть при работе самого сервера Apache. Закроем папку passwd для просмотра другими пользователями, как это сделать, мы рассмотрели в первом случае использования .htaccess, то есть запишем его в папку passwd со словами:

Options -Indexes
deny from all

Проверим запускается ли теперь наш файл test.php. Вы увидите, что не запускается, но нам он уже больше не нужен. Итак, мы создали папку passwd, узнали полный путь до нее, создали в ней файл с Вашими логин и паролем, плюс закрыли ее для просмотра другими пользователями.

Теперь создадим приватную папку, например privat (http://ваш_сайт.ru/privat/), в которую можно будет попасть, только, зная Ваш логин и пароль. Создаем в ней приватный файл privat.php (http://ваш_сайт.ru/privat/privat.php), например, для админских функций. И, наконец, записываем в нее .htaccess со следующими строками:

AuthType basic
AuthName 'Authorization...'
AuthUserFile 'полный_путь_до_passwd_на_серве ре/.htpasswd'
Require valid-user
DirectoryIndex privat.php

Что мы прописали в файле .htaccess в этот раз:
Первая строка - тип аутентификации
Вторая строка - что будет написано в диалоговом меню
Третья строка - откуда берем логин и пароль, полный путь до passwd мы ранее узнали.
Четвертая строка - для всех у кого совпали логин и пароль продолжить не отвергая
Пятая строка - при удачной авторизации переправляем пользователя на файл privat.php

Что в итоге, у нас получилось:папка: passwd ..
.htpasswd
login:d8bny9xqDGvHc
.htaccess
Options -Indexes
deny from all
папка: privat ..
privat.php Ваш недоступный скрипт
.htaccess
AuthType basic
AuthName 'Authorization...'
AuthUserFile 'полный_путь_до_passwd_на_серве ре/.htpasswd'
Require valid-user
DirectoryIndex privat.php


Теперь, чтобы пользователь попал на файл privat.php, ему надо пройти аутентификацию, иначе сервер выдаст ошибку.

Посмотреть как это выглядит можно здесь. Логин - pass, пароль - pass.

Попробуйте другие пароли и логины, Вы увидите, что к файлу privat.php доступа у Вас не будет. Кроме этого, после того как Вы авторизированы, больше пароль запрашиваться не будет.
а это что тогда ?
 
Ответить с цитированием