Forum Webscript.Ru

Программирование => Perl => Тема начата: .tux от 04 Января 2003, 16:22:24

Название: Login form & htpasswd
Отправлено: .tux от 04 Января 2003, 16:22:24
такой вопросик:
есть htpasswd файл... формат как всегда login:passwd
как сделать так чтобы данные из html-формы (login/passwd) искались в файле htpasswd, сравнивались, и если все правильно, юзер переходил на опред страницу, а если неправильно то облом! %)

вобщем грубо говоря интересует 2 вещи
1. как пароль из формы сравнить с зашифрованным паролем в htpasswd
и
2. как найти соотв. строку в htpasswd
Название: Login form & htpasswd
Отправлено: D13@ от 04 Января 2003, 16:31:21
Я делал так, для каждого логина своя папка и в ней свой .htaccess который беред логин и пароль из .htpasswd и написал PHP файл а в нем это:

Header("Location:http://$login:$password@Путь к папкам с пользователями/$login/");
?>
Только если ошибка в пароле или логине будет проблема
Название: Login form & htpasswd
Отправлено: Chs от 04 Января 2003, 16:53:10
Цитировать
1. как пароль из формы сравнить с зашифрованным паролем в htpasswd  и

perldoc -f crypt
Но вообще, если пользователь прошел через авторизацию сервера, то в %ENV есть имя пользователя.
Цитировать

2. как найти соотв. строку в htpasswd

Ручками. Перебор строк в цикле.
Название: Login form & htpasswd
Отправлено: Jslab от 18 Февраля 2003, 11:55:47
> Chs >> если пользователь прошел через авторизацию сервера, то в %ENV есть имя пользователя...

А как правильно это имя узнать?
1. Заходим по паролю в .../admin/index.htm
2. index.htm запускает admin.pl
либо просто document.location="../cgi-bin/admin.pl"
либо из формы


print "$ENV{\'AUTH_TYPE\'}";
print "$ENV{\'REMOTE_IDENT\'}";
print "$ENV{\'AUTH_USER\'}";
print "$ENV{\'REMOTE_USER\'}";

Но в результате я получаю все пустые поля...
(под Apache/1.3.26 (Unix) mod_perl/1.27 PHP/4.2.2)
хотя IIS дает результат - AUTH_TYPE=Negotiate
и искомые AUTH_USER, REMOTE_USER
В чем тут дело? ...
===
вот shtml (вместо perl) даёт значение REMOTE_USER,
т.е в окружении он есть точно,
но как его считать perl-скриптом? ...
Название: Login form & htpasswd
Отправлено: Chs от 18 Февраля 2003, 22:03:23

foreach (keys(%ENV))
{
print $_.\' - \'.$ENV{$_}."\\n";
}

Тоже ничего не выдаст?
Название: Login form & htpasswd
Отправлено: Jslab от 19 Февраля 2003, 13:23:28
тоже ничего (самих переменных нет)...
Скопировал 1:1 .htacces из запароленной папки (она была не в cgi-bin)
в подраздел cgi-bin, где admin.pl
и всё заработало !
- появились переменные AUTH_TYPE и REMOTE_USER и их значения
- а пароль запросился только один раз

не знаю, хорошее ли это решение(с двумя htacces),
видимо, в запрашиваемом окружении надо как-то указать его путь (к первой запароленной папке),
 а вот как...
Название: Login form & htpasswd
Отправлено: Chs от 19 Февраля 2003, 13:55:59
Ээээ...а часом в конфигурации сервера не относительный ли путь стоит к файлу паролей?