簡體   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