我忙於提高自己的PHP技能並製作簡單的登錄腳本。我用foreach循環檢查$ accounts數組,但認爲我做錯了什麼,因爲沒有休息時腳本給每個錯誤的帳戶登錄提供錯誤。我只是不知道我需要用什麼來代替foreach。有人可以幫助我嗎?使用foreach檢查登錄數據?
簡單的HTML表單:
<form method="post">
<label>E-mail:</label>
<input name="email" type="text" />
<label>Password:</label>
<input name="password" type="password" />
<input name="login" type="submit" value="Login" />
</form>
PHP:
<?php $accounts = array(
1 => array(
'surname' => 'Matt',
'lastname' => 'Kent',
'email' => '[email protected]',
'password' => 'test123'
),
2 => array(
'surname' => 'Jake',
'lastname' => 'Johnssen',
'email' => '[email protected]',
'password' => 'test456'
)
);
if(isset($_POST['login'])) {
foreach($accounts as $account) {
if($account['email'] == $_POST['email'] && $account['password'] == $_POST['password']) {
echo 'You are logged in!';
break;
}
elseif($account['email'] != $_POST['email']) {
echo 'Wrong e-mail';
break;
}
elseif($account['password'] != $_POST['password']) {
echo 'Wrong password';
break;
}
}
}
?>
不需要休息。這不是開關盒。那你爲什麼要把數據放在數組中?如果它來自數據庫,那麼你可以檢查自己的查詢。 –
foreach將遍歷數組,無論它是否正確。因此,當你有2個數組時,總是會是假的。還使用一組密碼不是很好的做法。特別是對於未被哈希的密碼(使用鹽),它似乎非常不安全。您是否無法使用數據庫使用PDO擴展與準備好的語句或MySQLi與準備好的語句 –
@kumar_v好吧,但我用中斷,否則腳本給每個帳戶的錯誤,錯誤的登錄組合 – Robbert