2013-07-19 2 views
0

preg_match을 사용하여 이미지 확장자가 제출되지 않도록합니다. 이제 "~"문자도 차단하고 싶습니다. 아무도 내가 어떻게 할 수 있다고 말할 수 있습니까? preg_match에서이 패턴이 작동하지 않는 이유

function is_valid($url) { 
    $res = 1; 
    if (isset($url['path'])) { 
     if (preg_match('/\b.jpg\b/i', $url['path'])) { $res = 0; } 
     if (preg_match('/\b.gif\b/i', $url['path'])) { $res = 0; } 
     if (preg_match('/\b.png\b/i', $url['path'])) { $res = 0; } 
     if (preg_match('/\b.bmp\b/i', $url['path'])) { $res = 0; } 
    } 
    return $res; 
} 

나는이 시도했지만 작동하지 않습니다 : 모든

if (strpos('~', $url['path'])) { 
    $res = 0; 
} 

답변

0

먼저, 당신은 정말 정규 표현식에 대해 뭔가를 읽어야한다! 이 작업을 완료 한 경우 manual (phps strpos)을 읽으십시오.

당신은 preg_match('/[^~]+\.(png|jpg|gif|bmp)/i', $url['path'])을 시도 할 수 또는 버전에 충실하려는 경우,

if (strpos($url['path'], '~') !== FALSE) { 
    $res = 0; 
} 

을 어쨌든, 수표는 매우 안전하지 않습니다. 예 : 누군가가 PHP 파일을 PNG로 이름을 바꾸고 업로드합니다. 아파치에서 mime_magic을 활성화하면 코드가 실행됩니다. 따라서 파일의 MIME 형식을 확인하는 것이 훨씬 안전합니다. 예를 들어 How do I find the mime-type of a file with php?을 참조하십시오. 허용되는 대답은 (지금) 사용되지 않는 기능에 대해 언급하지만 PHP 5.3 이상인 경우 http://de3.php.net/manual/en/function.finfo-file.php을 사용할 수 있습니다.

+0

와우! 귀하의 코드 작동 :) 감사합니다. 바보 같은 질문에 답하기 위해 시간을내어 주셔서 감사합니다. 도움에 크게 감사드립니다. 난 그냥 초보자이고 코딩을 배우려고! 나는 당신의 지시를 확실히 지킬 것입니다! 다시 한번 감사드립니다 :) @Michael –

관련 문제