[英]How to show one echo out of two from my if statement using PHP?
我正在進行一個學校項目,並且正在制作一個登錄系統,您可以在其中使用電子郵件或用戶名登錄。 但是我在顯示正確的回聲(電子郵件或用戶名不正確)時遇到問題。
這是我的代碼:
if(strpos($emailOrUsername, "@")){
$query = $dbh->prepare('SELECT * FROM register WHERE email = ?');
$query->execute(array($emailOrUsername));
}
if($query->rowCount() == 0){
echo('Email is incorrect');
}
if($emailOrUsername){
$query2 = $dbh->prepare('SELECT * FROM register WHERE username = ?');
$query2->execute(array($emailOrUsername));
}
if($query2->rowCount() == 0){
echo('Gebruikersnaam bestaat niet');
}
現在我只想顯示一個回聲。 因為如果您輸入錯誤的電子郵件和用戶名,它將顯示兩個回顯,而我只希望它顯示一個。
不用了 在一個查詢中查詢,如果沒有返回任何行,則回答“沒有這樣的用戶”,否則,您正在幫助黑客更進一步,以推斷出哪些用戶名或電子郵件正確無誤。
加成:
不要透露用戶名/電子郵件或密碼是否錯誤。 只需給出一般錯誤消息即可。
我認為你必須改變
if(strpos($emailOrUsername, "@"))
至
if(strpos($emailOrUsername, "@") !==false)
和
if($emailOrUsername)
至
elseif($emailOrUsername)
或elseif(!empty($emailOrUsername))
盡管有很多空間可以即興查詢,但到目前為止,我已經對其進行了改進以滿足您的需求。
if(strpos($emailOrUsername, "@")){
$query = $dbh->prepare('SELECT * FROM register WHERE email = ?');
$query->execute(array($emailOrUsername));
if($query->rowCount() == 0){
echo('Email is incorrect');
}
}
else {
$query2 = $dbh->prepare('SELECT * FROM register WHERE username = ?');
$query2->execute(array($emailOrUsername));
if($query2->rowCount() == 0){
echo('Gebruikersnaam bestaat niet');
}
}
您可以在一個if
else
塊中實現多個if
條件,而無需多個條件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.