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