[英]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.