@PetrSmirnov5
PHP, Java script

Как вывести текст, если логин или пароль неверны?

В случаях, когда неверный пароль и верный логин ,и логин не существует, мне нужно выводить текст "неверный логин или пароль". Моя программа выводит только текст "логин и пароль верные"при точном совпадении логина и пароля. $name и $password - это вводимые данные. Помогите найти и исправить ошибку.
$sql = mysqli_query($link, "SELECT * FROM reg WHERE name='$name'");
  while ($result = mysqli_fetch_array($sql)) {
  
    if($result['name'] == $name && $result['password'] == $password){
        echo 'логин и пароль верные';
    }else{
echo 'неверный логин и пароль';
}

  }
  • Вопрос задан
  • 991 просмотр
Решения вопроса 1
orlov0562
@orlov0562 Куратор тега PHP
I'm cool!
Если у тебя, не будет логина, то SQL запрос вернет 0 результатов и цикл while не отработает.
Соответственно тебе надо предусмотреть ошибку на такой случай.
$sql = mysqli_query($link, "SELECT * FROM reg WHERE name='$name' LIMIT 1");
if (!mysqli_num_rows($sql)) { // логин не найден
    echo 'неверный логин и пароль'; 
} else { // логин найден
    $result = mysqli_fetch_array($sql)
    if($result['password'] == $password){ // пароль верный
        echo 'логин и пароль верные';
    }else{ // пароль не верный
        echo 'неверный логин и пароль';
    }
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
idShura
@idShura
Если только исправить ошибку в приведенном коде, и не комментировать все остальное:
$sql = mysqli_query($link, "SELECT COUNT(*) cnt FROM reg WHERE name='$name' and password = '$password'");
  while ($result = mysqli_fetch_array($sql)) {
  
    if($result['cnt'] != 0){
        echo 'логин и пароль верные';
    }else{
echo 'неверный логин и пароль';
}

  }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы