#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 ?>
тег был неправильным в вашем коде.