Операторы If на PHP с 2 текстовыми полями

#php

#php

Вопрос:

Я отправляю имя пользователя и пароль из формы ввода и использую их для проверки моих массивов, если они там есть. Если оба присутствуют, я хочу повторить сообщение об успешном завершении, а если нет, я хочу вывести сообщение об ошибке.

Моя успешная часть инструкции if работает, но мое сообщение об ошибке не выводится при попытке. Может кто-нибудь, пожалуйста, помочь мне.

 <html>
<head>
    <title> Half Term Project 3 </title>
</head>
<body>
    <div align="center">
    <h2> Half Term Project 3 </h2>
    <?

    $errormessage = "log in details incorrect";
    $successmessage = "You are logged in";

    $userNames[0]="Carolyne"; 
    $userNames[1]="Dave"; 
    $userNames[2]="Sharonda"; 
    $userNames[3]="Milton"; 
    $userNames[4]="Macie"; 
    $userNames[5]="Harriette";
    $userNames[6]="Gianna"; 
    $userNames[7]="Grant"; 
    $userNames[8]="Caryl"; 
    $userNames[9]="Genna"; 
    $userNames[10]="Carl";

    $passwords[0]="password"; 
    $passwords[1]="123456"; 
    $passwords[2]="master"; 
    $passwords[3]="1234"; 
    $passwords[4]="qwerty"; 
    $passwords[5]="12345"; 
    $passwords[6]="dragon"; 
    $passwords[7]="mustang"; 
    $passwords[8]="baseball"; 
    $passwords[9]="football"; 
    $passwords[10]="letmein";

    $enteredusername = $_POST["username"];
    $enteredpassword = $_POST["password"];


    for($x=0; $x<=10; $x  ){
        if($enteredusername == $userNames[$x]){
            if($enteredpassword == $passwords[$x]){
            echo $successmessage;
            }
            else {
                echo $errormessage;
            }
        }
        else echo $errormessage;            
    }




    ?>
    </div>
</body>
 

Комментарии:

1. Пожалуйста, покажите свой код.

2. Как именно это «не работает»? Если вы никогда не вводите else блок, то, очевидно if , условие всегда true .

3. echo $errormessage; достигается только тогда, когда $enteredusername == $userNames[$x]

4. Я изменил код, теперь, когда я пытаюсь, он повторяет сообщение об ошибке 10 раз

5. @Dhruv: Предположительно, в массиве есть 10 элементов? Это то, что делают циклы, они повторяют операцию над массивом. Вы проверяете 10 элементов, и он не соответствует каждому из них.

Ответ №1:

Я рекомендую вам переписать свой код таким образом:

 $user_found = false;
for($x=0; $x<=10; $x  ){
    if($enteredusername == $userNames[$x] amp;amp; $enteredpassword == $passwords[$x]) {
        $user_found = true;
        break;
    }
}
if($user_found){
    echo $successmessage;
}
else {
    echo $errormessage;
}
 

Другой способ добиться того же — использовать in_array function:

 if (in_array($enteredusername, $userNames) 
    amp;amp; in_array($enteredpassword, $passwords)) {
    echo $successmessage;
} else {
    echo $errormessage;
}
 

Комментарии:

1. Я думаю, что in_array не будет работать, так как он ожидает, что 2-й параметр будет массивом, и мы сравниваем строки.

Ответ №2:

 ***
 
 <?php

for($x=0; $x<=10; $x  )
{
  if(($enteredusername == $userNames[$x]) amp;amp; ($enteredpassword == $passwords[$x]))
{
    $message = "success";
    break;
}
else
{
$message = "failure";
}
}
echo $message;

?> 

Ответ №3:

Посмотрите, поможет ли это вам —

 <html>
<head>
    <title> Half Term Project 3 </title>
</head>
<body>
    <div align="center">
    <h2> Half Term Project 3 </h2>
    <?php

    $errormessage = "log in details incorrect";
    $successmessage = "You are logged in";

    $userNames[0]="Carolyne"; 
    $userNames[1]="Dave"; 
    $userNames[2]="Sharonda"; 
    $userNames[3]="Milton"; 
    $userNames[4]="Macie"; 
    $userNames[5]="Harriette";
    $userNames[6]="Gianna"; 
    $userNames[7]="Grant"; 
    $userNames[8]="Caryl"; 
    $userNames[9]="Genna"; 
    $userNames[10]="Carl";

    $passwords[0]="password"; 
    $passwords[1]="123456"; 
    $passwords[2]="master"; 
    $passwords[3]="1234"; 
    $passwords[4]="qwerty"; 
    $passwords[5]="12345"; 
    $passwords[6]="dragon"; 
    $passwords[7]="mustang"; 
    $passwords[8]="baseball"; 
    $passwords[9]="football"; 
    $passwords[10]="letmein";

    $enteredusername = "Carolyn";
    $enteredpassword = "password";
    $is_exist = false;

    for($x=0; $x<=10; $x  ){
        if($enteredusername == $userNames[$x] amp;amp; $enteredpassword == $passwords[$x]){
            $is_exist = true;
            break;
        }
    }

    if($is_exist) echo $successmessage;
    else echo $errormessage;

    ?>
    </div>
 

И обратите внимание: <?php ?> тег был неправильным в вашем коде.