2016-06-10 3 views
-3

Я не совсем уверен, что мне здесь не хватает.if if else else does not work php

while($row = $result->fetch_assoc()) 
    { 
     // Makes sure input from uid matches database entry 
     if($user == $row['first']) 
     { 
      if($pass == $row['password']) 
      { 
       echo "Logged in"; 
       include "cookie.php"; 
      } 
      else 
      { 
       echo "Failed login"; 
      } 
     } 
     else 
     { 
      echo "Failed login"; 
     } 
    } 

Это, я считаю, проблема, хотя я не могу сказать, ЧТО проблема на самом деле. Он предназначен для предоставления неудачного логина, когда имя пользователя ($ user) ошибочно. Я хочу, чтобы страница отображала сообщение, если одна из двух неверна. Это нормально, когда пароль неверен, но если его имя пользователя неверно, ничего не происходит.

+0

'в то время как ($ строка = $ result-> FETCH_ASSOC())' --- тело цикла вычисляется, если есть 1 или несколько строк найденный. Предположительно, если неправильное имя входа найдено 0 строк. Не сказать, что вам вообще не нужна петля. – zerkms

+1

Вы загружаете все запросы или получаете только одного пользователя? – Rizier123

+0

Я получаю только одного пользователя, в зависимости от того, что «как» введенное имя пользователя – billybonkerybob

ответ

2

Почему вы делаете процесс входа в систему настолько сложным. Когда простой SQL-запрос может это сделать:

SELECT * FROM your_table where first = $user AND password = $pass 

Вам не нужно даже принести запись, вы можете просто рассчитывать &, что будет делать. Таким образом, если у вас есть уникальный столбец first в таблице, вы получите только 1 строку, если совпадения (успешная проверка подлинности), и нет, если это не так (аутентификация не удалась). Не нужно зацикливать & if/else.

+0

Спасибо за этот отзыв, меня научили делать так, как я сделал, но ваш путь лучше, поэтому спасибо – billybonkerybob

-1

Вы можете задать по умолчанию сообщение в следующим образом:

$message = "Failed login"; 
while($row = $result->fetch_assoc()){ 
    // Makes sure input from uid matches database entry 
    if($user == $row['first']) { 
     if($pass == $row['password']) { 
      $message = "Logged in"; 
      include "cookie.php"; 
     }else{ 
      $message = "Failed login"; 
     } 
    }else{ 
     $message  = "Failed login"; 
    } 
    echo $message; 
} 
+0

Я попытался сделать эта работа, но я был в состоянии, спасибо, хотя – billybonkerybob