Помогите решить проблему - нужно автоматически (средствами РНР) создавать файлы .htaccess и .htpasswd (то есть заводить новых юзеров Апача). Застопорился я на том что не нашёл алгоритма шифрования, работающего под РНР, способного создавать пароли юзеров подобно встроенной в Апач утилите.Тут ещё в заблуждение ввёл некий немец, предлагающий такое решение:
http://www.lars-brinkmann.de/faq/file/make_htaccess.txtОказалось что пароли, создаваемые crypt($passwd,CRYPT_STD_DES) не такие же, которые создаются самим апачем, точнее программкой "Encode Unix Password", работающей на моём компе и которой я до сих пор успешно пользовался, создавая их "вручную".
Слышал что PERL может такие пароли создавать, но тогда возникнет очередная головная боль - как обращатся к нему из моих PHP-скриптов?
Вобщем вопросов куча, а спросить не у кого, а у кого спрашивал - не знают...
>.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)
>А смысл?
>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/ - заработало
>Спасибо за помощь, но у меня какая-то фигня выходит - всякий раз,
>когда вызывается эта апачевская утилита с параметром "-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 они активно пользуют там функцию rand()
>:-)Во как! Заработало! А я и не подозревал о таком продвинутом алгоритме шифрования :)
Моя-то программка генерила всегда одну и ту же строку сколько бы раз я не вводил туда логин и пароль... Вот, век живи - век учись :)
Спасибо за помощь, Serial