Автор Тема: Login form & htpasswd  (Прочитано 4082 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн .tux

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Login form & htpasswd
« : 04 Января 2003, 16:22:24 »
такой вопросик:
есть htpasswd файл... формат как всегда login:passwd
как сделать так чтобы данные из html-формы (login/passwd) искались в файле htpasswd, сравнивались, и если все правильно, юзер переходил на опред страницу, а если неправильно то облом! %)

вобщем грубо говоря интересует 2 вещи
1. как пароль из формы сравнить с зашифрованным паролем в htpasswd
и
2. как найти соотв. строку в htpasswd
free your mind

Оффлайн D13@

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 153
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.tochka.ru
Login form & htpasswd
« Ответ #1 : 04 Января 2003, 16:31:21 »
Я делал так, для каждого логина своя папка и в ней свой .htaccess который беред логин и пароль из .htpasswd и написал PHP файл а в нем это:

Header("Location:http://$login:$password@Путь к папкам с пользователями/$login/");
?>
Только если ошибка в пароле или логине будет проблема
Error 500 - server Bo Bo

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Login form & htpasswd
« Ответ #2 : 04 Января 2003, 16:53:10 »
Цитировать
1. как пароль из формы сравнить с зашифрованным паролем в htpasswd  и

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

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

Ручками. Перебор строк в цикле.
2B OR NOT 2B = FF

Оффлайн Jslab

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 62
  • +0/-0
  • 0
    • Просмотр профиля
    • http://arkproject.com/intertype
Login form & htpasswd
« Ответ #3 : 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-скриптом? ...
« Последнее редактирование: 18 Февраля 2003, 17:39:23 от Jslab »

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Login form & htpasswd
« Ответ #4 : 18 Февраля 2003, 22:03:23 »

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

Тоже ничего не выдаст?
2B OR NOT 2B = FF

Оффлайн Jslab

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 62
  • +0/-0
  • 0
    • Просмотр профиля
    • http://arkproject.com/intertype
Login form & htpasswd
« Ответ #5 : 19 Февраля 2003, 13:23:28 »
тоже ничего (самих переменных нет)...
Скопировал 1:1 .htacces из запароленной папки (она была не в cgi-bin)
в подраздел cgi-bin, где admin.pl
и всё заработало !
- появились переменные AUTH_TYPE и REMOTE_USER и их значения
- а пароль запросился только один раз

не знаю, хорошее ли это решение(с двумя htacces),
видимо, в запрашиваемом окружении надо как-то указать его путь (к первой запароленной папке),
 а вот как...

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Login form & htpasswd
« Ответ #6 : 19 Февраля 2003, 13:55:59 »
Ээээ...а часом в конфигурации сервера не относительный ли путь стоит к файлу паролей?
2B OR NOT 2B = FF

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28