Forum Webscript.Ru

Программирование => PHP => Тема начата: bsd от 24 Декабря 2002, 12:00:52

Название: htpasswd в php
Отправлено: bsd от 24 Декабря 2002, 12:00:52
Мужики подскажите как можно на пхп создать что-то типа .htpasswd!
Название: htpasswd в php
Отправлено: Maniac от 24 Декабря 2002, 15:48:16
Полностью аналогичную штуку сделать нельзя (доступ к файлам управляется на уровне сервера)
Название: htpasswd в php
Отправлено: Pr0Head от 24 Декабря 2002, 16:23:35
Можно использовать что-то вроде этого, но это закроет доступ только на этот файл. Для полноценной защиты нужно использовать .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 "Доступ закрыт";
}
?>
Название: htpasswd в php
Отправлено: Меняздесьдавнонет от 24 Декабря 2002, 21:56:53
с помощью PHP можно создать .htpasswd
а "что-то вроде" можно вроде и создать.
Название: htpasswd в php
Отправлено: ThE0ReTiC от 24 Декабря 2002, 23:38:43
Maniac
Можно.
Это обычный текстовыйф файл определенного формата.
Так что какие могут быть проблемы?
Название: htpasswd в php
Отправлено: Maniac от 25 Декабря 2002, 17:24:46
ThE0ReTiC
Я так понял, ему нужно что-то похожее по функциональности, а не по содержанию :)
Название: htpasswd в php
Отправлено: ThE0ReTiC от 25 Декабря 2002, 17:27:00
Maniac
С чего ты так решил?
А где .htaccess, без которого .htpasswd работать не будет, в вопросе? ;)
Название: htpasswd в php
Отправлено: Maniac от 25 Декабря 2002, 17:35:40
Цитировать
А где .htaccess

Гм... Господин вопрошающий (кстати, где он?) мог и не знать о необходимости данного полезного файлика
Название: htpasswd в php
Отправлено: bsd от 27 Декабря 2002, 14:43:01
ThE0ReTiC

$sw=$log.\':\'.crypt( $passw,substr($passw,0,2))."\\n" ;

   if (!fwrite($fw,$sw))
      echo "Невозможно записать файл";


файл создается, но попасть в дир нельзя, а если создать .htpasswd с помощью утилиты htpasswd.exe , то все работает
Название: htpasswd в php
Отправлено: ThE0ReTiC от 27 Декабря 2002, 14:46:29
bsd
А где fopen/fclose ?
Название: htpasswd в php
Отправлено: bsd от 27 Декабря 2002, 14:50:56
ThE0ReTiC
да с файлом все Ок, т.е. htaccess и htpasswd создаются, я просто не весь текст привел. Меня интересует содержимое htpasswd , почему оно разно, как сделать чтобы было одинаковое, т.к. не опознается пароль, если делать выше указанным способом
Название: htpasswd в php
Отправлено: Меняздесьдавнонет от 27 Декабря 2002, 14:59:06
мне кажется, что надо делать не crypt, а md5
хотя зависит, в первую очередь, от версии самого htpasswd
самое правильное - запускать его через exec
Название: htpasswd в php
Отправлено: ThE0ReTiC от 27 Декабря 2002, 15:06:24
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, для хранимых паролей
Название: htpasswd в php
Отправлено: bsd от 27 Декабря 2002, 15:31:02
Через md5 тоже не идет, попробую чере exec!
Название: htpasswd в php
Отправлено: Metaller от 27 Декабря 2002, 15:38:36
У меня вот такое работает:


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 в php
Отправлено: Меняздесьдавнонет от 27 Декабря 2002, 17:45:44
работает - это хорошо.
а зачем?
Название: htpasswd в php
Отправлено: Metaller от 27 Декабря 2002, 17:48:30
А тебе обязательно это знать?
Название: htpasswd в php
Отправлено: Меняздесьдавнонет от 27 Декабря 2002, 18:12:52
ну, в общем, да.
в скором времени тоже придется генерить пароли для htpasswd
Название: htpasswd в php
Отправлено: Metaller от 27 Декабря 2002, 18:18:39
Так бы и сказал сразу :)
Нужно было через админский интерфейс создавать папки закрытые паролем. Чтоб это делали менеджеры без участия программеров/админов.
Название: htpasswd в php
Отправлено: Меняздесьдавнонет от 27 Декабря 2002, 18:47:59
не понимаю я, как оно работает...
Название: htpasswd в php
Отправлено: Metaller от 27 Декабря 2002, 18:56:05
Тебе честно сказать? Я тоже. Точнее как оно это делает понятно, а вот почему.. не очень.
Я просто после долгих поисков в инете нашел исходник на перле и переделал его на ПХП.
Название: htpasswd в php
Отправлено: Tronyx от 27 Декабря 2002, 22:12:09
Цитировать
Тебе честно сказать? Я тоже.

:D Ты знаешь, что программёр и шаман очень похожи?
Оба бормучут странные вещи, совеpшают непонятные действия и не могyт объяснить, как оно pаботает.