md5 шифрование в php

Ekaterina

Новичок
md5 шифрование в php

Есть файл с логинами и паролями, созданный через htpasswd.exe. Задача: если пользователь и пароль совпадают с введенными на странице - отобразить для них спец. данные. Делаю так:

PHP:
<? 
session_start();
$user_name = $_REQUEST['user_name'];
$user_password = $_REQUEST['user_psw'];
if ($user_name && $user_password)
{ 
// если пользователь пытается залогиниться
   $info_about_users =   file( '../password/.htpasswd' );
   
   $users_log_psw = array();   
      
   foreach($info_about_users as $v)
   {
      $user = explode(":",$v);
      $users_log_psw[$user['0']] = $user['1'];  
          
     
   }
   //print_r($users_log_psw);md5
   
   foreach($users_log_psw as $k=>$v) 
   {  
      if (($user_name == $k)  && (md5($user_password) == $v))
      {  echo "пароль прочитан";
        
         // если пользователь найден в файле
         // зарегистрировать его идентификатор
         $valid_user = $user_name;
         session_register("valid_user"); 
      }    	
   }
}

?>
Условие
PHP:
 if (($user_name == $k)  && (md5($user_password) == $v))
не выполняется, потому что пароль, считанный из файла (был получен с md5) не совпадает со значением (md5($user_password). Почему так происходит? Алгоритмы различны?
 

Ekaterina

Новичок
Спасибо. Решила генерить пароли средствами php, в связи с чем возник вопрос, применяю функцию fopen:
PHP:
$file = "d:/ulp.txt";
$f = fopen($file,"r+");
.....
[PHP]
Но fopen не видит этот файл. Ошибка: "failed to open stream: No such file or directory in..."
В справке указано следующее: "If PHP has decided that filename  specifies a local file, then it will try to open a stream on that file. The file must be accessible to PHP, so you need to ensure that the file access permissions allow this access... "
Глупый вопрос: где смотреть эти права доступа, если ошибка действительно в этом? Помогите, плиз, чувствую, что туплю.
 

korvin0

моська
Ekaterina
указывайте для $file относительный путь, а не абсолютный. Так будет лучше.
p.s. А права доступа ставятся в свойствах файла, закладка "Безопасность".
 

Ekaterina

Новичок
Я указывала: $file = "../tmp/ulp.txt"; - та же ошибка.
абсолютный путь к tmp: "d:/localhost/tmp/ulp.txt".
Скрипт, записывающий этот файл лежит там же.
 

korvin0

моська
проверка, видит ли пхп ваш файл - это функция file_exists. Если видит, то крутите права доступа, если нет, то проверяйте указанный путь к файлу
 

Breeze

goshogun
Команда форума
Партнер клуба
в .htpasswd первые два символа у пароля -- salt
по идее, если сделать crypt($input_password, substr($hash_from_htpasswd, 0, 2))==$hash_from_htpasswd
 

Ekaterina

Новичок
Breeze ,
в .htpasswd первые два символа у пароля -- salt по идее, если сделать crypt($input_password, substr($hash_from_htpasswd, 0, 2))==$hash_from_htpasswd
Почему-то они не равны:
Сгенерила через htpasswd пользователя с паролем "mypassword": $apr1$wY2.....$l9SQAiv4MJDkSEW8EXIKE0

А это результат работы функции crypt() по Вашему алгоритму для того же "mypassword": myylAylKPNtmw

-~{}~ 28.09.09 10:53:

Автор оригинала: korvin0
проверка, видит ли пхп ваш файл - это функция file_exists. Если видит, то крутите права доступа, если нет, то проверяйте указанный путь к файлу
Скрипт действительно не видит мой файл, поэтому продолжаю тупить насчет прав: когда щелкаю правой кнопкой по файлу, выбираю его свойства, то там только две вкладки: Общие и сводка. Где искать
 

Ekaterina

Новичок
У меня отключен режим safe mode в настройках php. Вы не мог ли бы ткнуть меня конкретно в то, что я должна сделать для проверки прав доступа к моему файлу с паролями. плиз.
 

Beavis

Banned
Ekaterina
сорри, я особо в вашей проблеме не разбирался, просто указал что в виндоусе права доступа к файлу доступны из безопасного режима (виндоуса а не php)
 

Breeze

goshogun
Команда форума
Партнер клуба
*

-~{}~ 28.09.09 14:15:

кстати можно использовать сам htpasswd.exe через system или что там есть.
htpasswd.exe -nmb myuser mypassword выведет все, что нужно, без обновления файла .htpasswd
 

Ekaterina

Новичок
Автор оригинала: Breeze
*

-~{}~ 28.09.09 14:15:

кстати можно использовать сам htpasswd.exe через system или что там есть.
htpasswd.exe -nmb myuser mypassword выведет все, что нужно, без обновления файла .htpasswd
Спасибо всем за помощь, вопрос закрыт. Я решила не мучаться с htpasswd.exe, а просто сгенерить логины и пароли средствами php: с помощью функции md5(), а затем записать их в текстовый файл.
 
Сверху