2012-08-22 6 views
1

이미지 URL을 PHP 스크립트에 게시합니다. 이 PHP 스크립트에서 나는 이미지 URL을 얻고 확장이 무엇인지 확인하고이 확장은 확장의 몇 여부에 일치하는 경우 :이미지 URL은 if 문을 통과 할 수 없습니다.

 $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"; 
     } 

그러나 심지어 내가 게시물 URL처럼 : http://www.test.com/picture.jpg 그가 연장을 얻는다을 ,이 경우 jpg에서 그는 여전히 if 문에서 언급 한 것과 확장이 같지 않다는 if 문을 처리합니다.

내가 뭘 잘못하고 있는지 몰라?

+2

사실 할 수 || 거짓 = 참 – Phil

답변

0

코드가 거의 맞지만 올바른 연산자 (이 경우 &&)를 사용해야합니다.

이 시도하십시오

$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"; 
    } 

당신은 사용이 항상 부정적인 문장의 순서는 운영자 &&을 사용해야합니다.

원하는대로 할 수있는 방법이 많이 있지만 코드를 그대로 유지하려는 경우 ||에서 &&으로 변경하면 문제가되지 않습니다.

Logical Operators에 대한 자세한 내용은 PHP를 참조하십시오.

2

이 논리에서는 or이 아니라 and을 사용하려고합니다. 확장 (즉 "JPG")를 허용하는 경우에도, "확장자가 JPG되지 않습니다 또는 PNG되지 또는 GIF되지 않는 경우"항상 일치하는

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

는 현재 귀하의 if 문 읽기 왜냐하면 "jpg"! = "png"이기 때문입니다.

if 문구가 "확장 프로그램이 jpg가 아니며 png가 아니며 gif가 아닌 경우"라고 표시되기 때문에 and을 원한다면 올바르지 않습니다.

1

논리 전환 해보십시오 : 기준 중 하나라도 충족하는 경우 또는 사용

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

이 조건이 발생됩니다를하고, .JPG 확장자가 .png를 일치하지 때문에, 그것은거야 Wrong 메시지를 보내주십시오.

2

또한

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