Forum Webscript.Ru
Программирование => PHP => Тема начата: bsd от 24 Декабря 2002, 12:00:52
-
Мужики подскажите как можно на пхп создать что-то типа .htpasswd!
-
Полностью аналогичную штуку сделать нельзя (доступ к файлам управляется на уровне сервера)
-
Можно использовать что-то вроде этого, но это закроет доступ только на этот файл. Для полноценной защиты нужно использовать .htpasswd
if(!isset($PHP_AUTH_USER)) {
Header("WWW-Authenticate: Basic realm=\\"My Realm\\"");
Header("HTTP/1.0 401 Unauthorized");
echo "Text to send if user hits Cancel button\\n";
exit;
}
elseif ($PHP_AUTH_USER == "username" & $PHP_AUTH_PW == "password") {
header("Location: news.php");
}
else {
echo "Доступ закрыт";
}
?>
-
с помощью PHP можно создать .htpasswd
а "что-то вроде" можно вроде и создать.
-
Maniac
Можно.
Это обычный текстовыйф файл определенного формата.
Так что какие могут быть проблемы?
-
ThE0ReTiC
Я так понял, ему нужно что-то похожее по функциональности, а не по содержанию :)
-
Maniac
С чего ты так решил?
А где .htaccess, без которого .htpasswd работать не будет, в вопросе? ;)
-
А где .htaccess
Гм... Господин вопрошающий (кстати, где он?) мог и не знать о необходимости данного полезного файлика
-
ThE0ReTiC
$sw=$log.\':\'.crypt( $passw,substr($passw,0,2))."\\n" ;
if (!fwrite($fw,$sw))
echo "Невозможно записать файл";
файл создается, но попасть в дир нельзя, а если создать .htpasswd с помощью утилиты htpasswd.exe , то все работает
-
bsd
А где fopen/fclose ?
-
ThE0ReTiC
да с файлом все Ок, т.е. htaccess и htpasswd создаются, я просто не весь текст привел. Меня интересует содержимое htpasswd , почему оно разно, как сделать чтобы было одинаковое, т.к. не опознается пароль, если делать выше указанным способом
-
мне кажется, что надо делать не crypt, а md5
хотя зависит, в первую очередь, от версии самого htpasswd
самое правильное - запускать его через exec
-
RomikChef
Конечно через md5.
crypt() will return an encrypted string using the standard Unix DES-based encryption algorithm or alternative algorithms that may be available on the system.
А в Apache по умолчанию используется MD5, для хранимых паролей
-
Через md5 тоже не идет, попробую чере exec!
-
У меня вот такое работает:
function to64($v, $n)
{
$s ="";
$itoa64 = \'./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\';
while (--$n >= 0) {
$s .= substr($itoa64, $v & 63, 1);
$v >>= 6;
}
return $s;
}
function CryptPass($pass)
{
mt_srand(microtime());
$salt = to64(mt_rand(0,65535), 2);
$cpass = crypt($pass, $salt);
return $cpass;
}
-
работает - это хорошо.
а зачем?
-
А тебе обязательно это знать?
-
ну, в общем, да.
в скором времени тоже придется генерить пароли для htpasswd
-
Так бы и сказал сразу :)
Нужно было через админский интерфейс создавать папки закрытые паролем. Чтоб это делали менеджеры без участия программеров/админов.
-
не понимаю я, как оно работает...
-
Тебе честно сказать? Я тоже. Точнее как оно это делает понятно, а вот почему.. не очень.
Я просто после долгих поисков в инете нашел исходник на перле и переделал его на ПХП.
-
Тебе честно сказать? Я тоже.
:D Ты знаешь, что программёр и шаман очень похожи?
Оба бормучут странные вещи, совеpшают непонятные действия и не могyт объяснить, как оно pаботает.