簡體   English   中英

圖片網址無法通過if語句

[英]Image url can't get through if statement

我將圖片網址發布到php腳本。 在此php腳本中,我獲取圖像URL並檢查擴展名是什么,以及此擴展名是否與幾個擴展名匹配:

        $ext1 = pathinfo($_POST['form_pic'], PATHINFO_EXTENSION);
        $ext = strtolower($ext1);

        if($ext != 'jpg' || $ext != 'jpeg' || $ext != 'png' || $ext != 'gif') {
            echo $ext; echo "wrong";        
        }else{
            echo "a correct extension";
        }

但是,即使我發布了一個網址,例如: http : //www.test.com/picture.jpg並且他獲得了擴展名(在本例中為jpg),他仍然會通過if語句,說擴展名不等於if語句中提到的一個。

我不知道我在做什么錯?

您要使用and在此邏輯中,不是or

if($ext != 'jpg' && $ext != 'jpeg' && $ext != 'png' && $ext != 'gif')

當前,您的if語句顯示為“如果擴展名不是jpg或不是png或不是gif”,即使允許擴展名(即“ jpg”),也將始終匹配,因為“ jpg”!= “ png”。

您需要and因為它將使if語句顯示為“如果擴展名不是jpg,不是png和不是gif”,則它無效。

你也可以

if(in_array($ext,array('gif','jpg','jpeg','png')){
//good
}else{
//bad
}

嘗試切換邏輯:

if($ext == 'jpg' || $ext == 'jpeg' || $ext == 'png' || $ext == 'gif') {
    echo "a correct extension";
}else{
    echo $ext; echo "wrong";        
}

使用OR時,如果滿足任何條件,則將觸發條件,並且由於.jpg擴展名與.png擴展名不匹配,因此會給您Wrong消息。

您的代碼幾乎是正確的,但是在這種情況下,您必須使用正確的運算符&&

請嘗試以下方法:

$ext1 = pathinfo($_POST['form_pic'], PATHINFO_EXTENSION);
$ext = strtolower($ext1);

   if($ext != 'jpg' && $ext != 'jpeg' && $ext != 'png' && $ext != 'gif') {
        echo $ext; echo "wrong";        
   } else {
        echo "A correct extension";
   }

當您使用一系列否定語句時,應始終使用&&運算符。

有很多方法可以執行您想要的操作,但是如果您想保留代碼,只需更改|| && ,就可以了。

請閱讀有關PHP中邏輯運算符的更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM