Вход по логину и паролю

raizus

Guest
Вход по логину и паролю

Скрипт конечно глуп, но мне нужен.

Общая проблема: есть база, в каждой сточке записан Логин и пароль через ::

Сам скрипит (укороченный вариант, только сама проблема):

<?

$users=file("pol.dat");

while($string=array_shift($users))
{
list($a,$b,$u)=explode("::",$string);
if($a==$login&&$b!=$passw){$s=3;}
if($a==$login&&$b==$passw){$s=1;}
if($a!=$login){$s=2;}
}

if($s==1){echo "Всё нормально";}
if($s==2){echo "Такое имя не существует";}
if($s==3){echo "Пароль не верен";}

?>

Проблема: Если есть нет строки if($a!=$login){$s=2;} всё работает, но нужно чтоб скрипт выдавал сообщение если Пользователя с таким именем не существует.

С уважением.
 

Фанат

oncle terrible
Команда форума
я бы предложил сделать проверку в цикле.
тогда не придётся писать код для каждой строки.
посмотреть, как работать с циклами и условными переходами, можно здесь:
http://phpfaq.ru/php5.ru/study/chapter3.html
 

raizus

Guest
Спасибо.

-~{}~ 29.03.05 20:36:

Я не пойму в чём у меня ошибка, неговоря уже об её исправлении.

<?

$users=file("pol.dat");

while($string=array_shift($users))
{
list($a,$b,$u)=explode("::",$string);

if($a!=$login){$s=3;}

else if($a==$login&&$b!=$passw){$s=3;}

else ($a==$login&&$b==$passw){$s=1;}
}

if($s==1){echo "Всё нормально";}
if($s==2){echo "Такое имя не существует";}
if($s==3){echo "Пароль не верен";}

?>

Он работает только с последней строчкой. Можно ещё вот так:

<?

$users=file("pol.dat");
$s=3;
while($string=array_shift($users))
{
list($a,$b,$u)=explode("::",$string);

if($a==$login&&$b!=$passw){$s=3;}
if($a==$login&&$b==$passw){$s=1;}
}

if($s==1){echo "Всё нормально";}
if($s==2){echo "Такое имя не существует";}
if($s==3){echo "Пароль не верен";}

?>

Тогда тоже работает, но почему 1 вариант не пашит не знаю.
 

Demiurg

Guest
else ($a==$login&&$b==$passw){$s=1;} - это что за конструкция ?
и после нахождения нужной тебе строки надо выходить из цикла.
 

Фанат

oncle terrible
Команда форума
Я не пойму в чём у меня ошибка, неговоря уже об её исправлении.
с этим мы тоже можем тебе помочь
читай PHP FAQ: Ничего не работает! Что делать???

если вкратце - почему бы тебе не выводить значения переменных, с которыми ты работаешь, для визуального контроля?
почему бы тебе не идти от простого к сложному, сначала написав цикл просто выводящий элементы массива, потом добавив в него одну проверку, вторую, и так далее?
 

TAHK

Guest
И опять 25 - сходите на http://ua2.php.net/manual/en/function.file.php и прочитайте ман. Не поймете - прочитайте еще раз
 

raizus

Guest
Автор оригинала: Demiurg
else ($a==$login&&$b==$passw){$s=1;} - это что за конструкция ?
и после нахождения нужной тебе строки надо выходить из цикла.
извини, торопился без ($a==$login&&$b==$passw). Я просто сам ищю ошибку, если мне её исправят я не дойду до того чтобы самому что то делать.

Спасибо за советы.
 
Сверху