URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 1585
[ Назад ]

Исходное сообщение
"Как создать строку логин/пароль для .htpasswd средствами PHP"

Отправлено prashant , 06-Авг-03 18:54 
Помогите решить проблему - нужно автоматически (средствами РНР) создавать файлы .htaccess и .htpasswd (то есть заводить новых юзеров Апача). Застопорился я на том что не нашёл алгоритма шифрования, работающего под РНР, способного создавать пароли юзеров подобно встроенной в Апач утилите.

Тут ещё в заблуждение ввёл некий немец, предлагающий такое решение:
http://www.lars-brinkmann.de/faq/file/make_htaccess.txt

Оказалось что пароли, создаваемые crypt($passwd,CRYPT_STD_DES) не такие же, которые создаются самим апачем, точнее программкой "Encode Unix Password", работающей на моём компе и которой я до сих пор успешно пользовался, создавая их "вручную".

Слышал что PERL может такие пароли создавать, но тогда возникнет очередная головная боль - как обращатся к нему из моих PHP-скриптов?

Вобщем вопросов куча, а спросить не у кого, а у кого спрашивал - не знают...


Содержание

Сообщения в этом обсуждении
"Как создать строку логин/пароль для .htpasswd средствами PHP"
Отправлено Serial , 07-Авг-03 10:12 
>.htpasswd (то есть заводить новых юзеров Апача). Застопорился я на том
>что не нашёл алгоритма шифрования, работающего под РНР, способного создавать пароли
>юзеров подобно встроенной в Апач утилите.
>
А смысл?
exec('$APACHE_BIN/htpasswd -b  $APACHE_BIN/.htpass '.$login.' '.$pass1.' 2>&1',$output,$result);
if ($result==0) {
  echo "Пользователь зарегистрирован<br>";
} else {
  echo "код ошибки $result<br>";
  echo "Сообщение об ошибке: <br>";
  foreach ($output as $val) echo $val."<br>";
}
Естественно, надо позаботиться о безопасности вызова (проверить $login и $pass)

"Как создать строку логин/пароль для .htpasswd средствами PHP"
Отправлено prashant , 07-Авг-03 13:04 
>А смысл?
>exec('$APACHE_BIN/htpasswd -b  $APACHE_BIN/.htpass '.$login.' '.$pass1.' 2>&1',$output,$result);
>if ($result==0) {
>  echo "Пользователь зарегистрирован<br>";
>} else {
>  echo "код ошибки $result<br>";
>  echo "Сообщение об ошибке: <br>";
>  foreach ($output as $val) echo $val."<br>";
>}
>Естественно, надо позаботиться о безопасности вызова (проверить $login и $pass)

Спасибо за помощь, но у меня какая-то фигня выходит - всякий раз, когда вызывается эта апачевская утилита с параметром "-b" в строке "login:passwd" выводится новый пароль, причём я это проверял на локальном компе(win) и в интернете (Linux). Пробовал параметр "-bd" - не помогает :(

проблема  вторая - $APACHE_BIN не установлена, но я подставил туда
/usr/local/apache/bin/ - заработало


"Как создать строку логин/пароль для .htpasswd средствами PHP"
Отправлено Serial , 07-Авг-03 18:09 
>Спасибо за помощь, но у меня какая-то фигня выходит - всякий раз,
>когда вызывается эта апачевская утилита с параметром "-b" в строке "login:passwd"
>выводится новый пароль, причём я это проверял на локальном компе(win) и
>в интернете (Linux). Пробовал параметр "-bd" - не помогает :(
>
Так это ж так и должно быть ;-)
Судя по поверхностному просмотру сырцов htpasswd они активно пользуют там функцию rand() :-)

/usr/local/Apache2/bin # ./htpasswd -cb .httest test1 testpasswd
Adding password for user test1
/usr/local/Apache2/bin # ./htpasswd -b .httest test2 testpasswd
Adding password for user test2
/usr/local/Apache2/bin # cat .httest
test1:YQ.e2WYw1uFsE
test2:RtnbM/q1P98x2
/usr/local/Apache2/bin # rm .httest
/usr/local/Apache2/bin # ./htpasswd -cb .httest test1 testpasswd
Adding password for user test1
/usr/local/Apache2/bin # ./htpasswd -b .httest test2 testpasswd
Adding password for user test2
/usr/local/Apache2/bin # cat .httest
test1:BUGrd1AcocH3Y
test2:3OyZn.O8aA6g6


"Как создать строку логин/пароль для .htpasswd средствами PHP"
Отправлено prashant , 08-Авг-03 12:33 
>Так это ж так и должно быть ;-)
>Судя по поверхностному просмотру сырцов htpasswd они активно пользуют там функцию rand()
>:-)

Во как! Заработало! А я и не подозревал о таком продвинутом алгоритме шифрования :)

Моя-то программка генерила всегда одну и ту же строку сколько бы раз я не вводил туда логин и пароль... Вот, век живи - век учись :)

Спасибо за помощь, Serial