繁体   English   中英

如何使用PHP在我的if语句中显示两个回声中的一个?

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM