Forum Webscript.Ru

Программирование => PHP => Тема начата: wheelszeus от 20 Января 2005, 13:48:00

Название: Файл с паролями
Отправлено: wheelszeus от 20 Января 2005, 13:48:00
Здравствуйте уважаемые! У меня есть текстовый файл passw.txt с паролями такого вида:
Пароль(это шапка)
1111111; 1111112; 1111113

есть форма в которой юзер вводит пароль и далее скрипт обрабатывает это все:
$filename = "passw.txt"; //
$fp = fopen( $filename, "r" ) or die("ошибка"); while ( ! feof( $fp ))
  {
   $line = fgets($fp, 1024);
   $line_array = explode(";", $line);
   $folder = $line_array[0];
   }
   if ($folder == $password)
    {
     echo "Пароль правильный!";
    }
   else
    {
      echo "Пароль неверный!";
    }
?>
но он мне выдает, что неверный всегда! Как сделать так, что б  я мог хранить в файле несколько разных паролей и вход работал корректно?
Заранее спасибо.
Название: Файл с паролями
Отправлено: Lutik от 20 Января 2005, 13:56:58
Пробуй так:

$filename = "passw.txt"; //
$fp = fopen( $filename, "r" ) or die("ошибка");
while ( ! feof( $fp ))
{
$line = fgets($fp, 1024);
$line_array = explode(";", $line);
for($i=0; $iif (trim($line_array[$i]) == trim($password))
{
echo "Пароль правильный!";
}
else
{
echo "Пароль неверный!";
}
}
}
Название: Файл с паролями
Отправлено: Croaker от 20 Января 2005, 14:00:50
Храни пароли в таком формате: одна строчка - один пароль.


1111111
1111112
1111113



А проверку так делай:


$passwords = file("passwd.txt");
if (in_array($your_pass, $passwords)) {
  print \'Пароль верный.\';    
} else {
  print \'Пароль не верный.\';
}


Но: помимо паролей есть еще и логины. Хранить их надо парами. Типа:


user1@1111111
user2@1111112
user3@1111113


и проверка соотвественно:

...
if (in_array($your_login."@".$your_pass, $passwords)) {
...


+ Чтобы совсем хорошо было, храни пароли не в открытом виде, а зашифрованые в [P]MD5[/P].
Название: Файл с паролями
Отправлено: wheelszeus от 20 Января 2005, 14:18:03
Всем огромное спасибо! Но пока ничего не получается (((
Lutik: все работает, но если ввести например 2-ой пароль, то он один раз напишет что пароль неверный и после что верный, если ввечти 3-й пароль, то напишет 2 раза неверный и потом верный
в чем тут проблема?
==========
Croaker: если делать как ты предложил, то верный пароль всегда будет только последний... странно
Название: Файл с паролями
Отправлено: Croaker от 20 Января 2005, 14:23:43
Цитировать
wheelszeus:
если делать как ты предложил, то верный пароль всегда будет только последний...


С чего ты взял?
Название: Файл с паролями
Отправлено: wheelszeus от 20 Января 2005, 14:26:45
проверил
Название: Файл с паролями
Отправлено: wheelszeus от 20 Января 2005, 14:29:09
Если я делаю файл с паролями с логином и паролем и потом вот так обрабатываю, то он всегда выдает что пароль неверный
$passwords = file("password.txt");
if (in_array($login."@".$password, $passwords)) {
  print \'Пароль верный.\';
} else {
  print \'Пароль невеный.\';
}
?>

если делать так, что пароль всегда неверный
Название: Файл с паролями
Отправлено: Croaker от 20 Января 2005, 14:34:49
Цитировать
wheelszeus:
если делать так, что пароль всегда неверный


Сделай в конце файла


print $login."@".$password;

print \'
\';
print_r($passwords);
print \'
\';


Что выводится?
Название: Файл с паролями
Отправлено: wheelszeus от 20 Января 2005, 14:39:00
Croaker
В том и дело, что я ввожу правильный пароль и он должен видеть что он правильный... выводит вот это:
Пароль не верный.user2@124
Array
(
   
Название: Файл с паролями
Отправлено: Croaker от 20 Января 2005, 17:12:45
wheelszeus

А что нам говорит вот такой код в конце файла?


if ($passwords[1] == $login."@".$password) {
    print "Пароль и логин совпали.";
} else {
    print \'Пароль и логин не совпали.\';
}
Название: Файл с паролями
Отправлено: Lutik от 20 Января 2005, 18:52:02
Цитировать
wheelszeus:
 все работает, но если ввести например 2-ой пароль, то он один раз напишет что пароль неверный и после что верный, если ввечти 3-й пароль, то напишет 2 раза неверный и потом верный в чем тут проблема?

Так делай редирек на секретный фаил, как только найдет совпадение. А в начале скрипта поставь какуюто переменную типа:

$err=null;
$filename = "passw.txt"; //
$fp = fopen( $filename, "r" ) or die("ошибка");
while ( ! feof( $fp ))
{
$line = fgets($fp, 1024);
$line_array = explode(";", $line);
for($i=0; $iif (trim($line_array[$i]) == trim($password))
{
echo "Пароль правильный!";
}
else
{
$err="Пароль неверный!";
}
}
}
echo $err;
Название: Файл с паролями
Отправлено: wheelszeus от 21 Января 2005, 11:17:27
Цитировать
Croaker:
А что нам говорит вот такой код в конце файла?

 if ($passwords[1] == $login."@".$password) {print "Пароль и логин совпали.";} else {print \'Пароль и логин не совпали.\';}

Т.е. получается если я ввожу еще один пароль в файл с паролями, то мне придеться дописывать такой блок проверки?
Название: Файл с паролями
Отправлено: Croaker от 21 Января 2005, 12:14:22
Цитировать
wheelszeus:
Т.е. получается если я ввожу еще один пароль в файл с паролями, то мне придеться дописывать такой блок проверки?


Нет не получается. Этот код нужен для отладки твоего скрипта.
Название: Файл с паролями
Отправлено: Меняздесьдавнонет от 21 Января 2005, 12:44:20
http://phpclub.ru/talk/showthread.php?postid=190461#post190461