2013-11-14 4 views
1

영어가 너무 좋지 않습니다. 죄송합니다.

저는 PHP 언어로 작업 중이며 프로필 이미지 업로드에 문제가 있습니다. 내 코드는 아직 서버의 유형을 기반으로 이미지를 필터링합니다. 동일한 IP가 아닌 허용 된 유형의 파일이 있습니다.

내 유형 검사 때문이지만 확실하지 않다고 생각합니다. 도와주세요!

$bild = array('jpg', 'jpeg', 'png', 'gif'); 
if (in_array($_FILES['image']['type'], $bild) { 
    mysqli_laden($_FILES); 
} 
+2

어쩌면 [이] (http://www.php.net/manual/de/reserved하는 데 도움이 .variables.files.php # 109902)는 "$ _FILES ["image "] ["type "]'을 신뢰하지 않습니다. 브라우저에서 보낸 것이므로 이미지를 신뢰하지 마십시오 "[finfo_open] (http://www.php.net/manual/en/function.finfo-open.php)을 사용하는 것이 좋습니다." – kero

답변

2

mysqli_laden이 서버에 업로드하는 사용자 지정 함수라고 가정합니다. $ _FILES [ "image"] [ "type"]이 파일 자체가 아닌 브라우저에서 정보를 얻을 때주의해야합니다. 파일의 MIME 형식을 확인할 훨씬 안정적인 finfo_open 함수를 사용해야합니다. 여기 체크 아웃 : http://www.php.net/manual/en/function.finfo-open.php

귀하의 코드는 다음과

$bild = array('image/jpg', 'image/jpeg', 'image/png', 'image/gif'); 
$image = $_FILES['image']['type']; 
$finfo = new finfo(FILEINFO_MIME); 
$image_inf = $finfo->file($image); 

if (in_array($image_inf, $bild) { 
    mysqli_laden($_FILES); 
} 

희망과 같을 것이

+0

잘 모르겠지만 $ finfo-> file (FILEINFO_MIME, $ image); ' – putvande

+0

@putvande : 아니오 http : //us1.php. net/finfo_file 또는'$ finfo = new finfo (FILEINFO_MIME); $ image_inf = $ finfo-> file ($ image); ' – AbraCadaver

+0

맞습니다. 잘못된 기능을보고있었습니다. – putvande

관련 문제