Forum Webscript.Ru
Программирование => Perl => Тема начата: .tux от 04 Января 2003, 16:22:24
-
такой вопросик:
есть htpasswd файл... формат как всегда login:passwd
как сделать так чтобы данные из html-формы (login/passwd) искались в файле htpasswd, сравнивались, и если все правильно, юзер переходил на опред страницу, а если неправильно то облом! %)
вобщем грубо говоря интересует 2 вещи
1. как пароль из формы сравнить с зашифрованным паролем в htpasswd
и
2. как найти соотв. строку в htpasswd
-
Я делал так, для каждого логина своя папка и в ней свой .htaccess который беред логин и пароль из .htpasswd и написал PHP файл а в нем это:
Header("Location:http://$login:$password@Путь к папкам с пользователями/$login/");
?>
Только если ошибка в пароле или логине будет проблема
-
1. как пароль из формы сравнить с зашифрованным паролем в htpasswd и
perldoc -f crypt
Но вообще, если пользователь прошел через авторизацию сервера, то в %ENV есть имя пользователя.
2. как найти соотв. строку в htpasswd
Ручками. Перебор строк в цикле.
-
> Chs >> если пользователь прошел через авторизацию сервера, то в %ENV есть имя пользователя...
А как правильно это имя узнать?
1. Заходим по паролю в .../admin/index.htm
2. index.htm запускает admin.pl
либо просто document.location="../cgi-bin/admin.pl"
либо из формы
-
foreach (keys(%ENV))
{
print $_.\' - \'.$ENV{$_}."\\n";
}
Тоже ничего не выдаст?
-
тоже ничего (самих переменных нет)...
Скопировал 1:1 .htacces из запароленной папки (она была не в cgi-bin)
в подраздел cgi-bin, где admin.pl
и всё заработало !
- появились переменные AUTH_TYPE и REMOTE_USER и их значения
- а пароль запросился только один раз
не знаю, хорошее ли это решение(с двумя htacces),
видимо, в запрашиваемом окружении надо как-то указать его путь (к первой запароленной папке),
а вот как...
-
Ээээ...а часом в конфигурации сервера не относительный ли путь стоит к файлу паролей?