2013-11-14 44 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)help:「永遠不要信任'$ _FILES [」image「] [」type「]'它會從瀏覽器發送任何東西,所以不要相信這個圖片我建議使用[finfo_open](http://www.php.net/manual/en/function.finfo-open.php)「 – kero

回答

2

我假定mysqli_laden是一個上傳到服務器的自定義函數。使用$ _FILES [「image」] [「type」]時要小心,因爲它從瀏覽器中獲取信息而不是文件本身。你應該使用更可靠的finfo_open函數來驗證文件的MIME類型。看看這裏: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,$圖片);' – putvande

+0

@putvande:編號http://us1.php。 net/finfo_file或'$ finfo = new finfo(FILEINFO_MIME); $ image_inf = $ finfo-> file($ image);' – AbraCadaver

+0

你是對的,正在尋找錯誤的功能。 – putvande