我的英語不太好,對不起。
我正在使用PHP語言,並且在配置文件圖像上傳時遇到問題 我的代碼根據服務器上的類型過濾圖像我擁有的文件不是可接受的類型,始終來自相同的IP。
我認爲這是因爲我的類型檢查,但不知道。請幫忙!
$bild = array('jpg', 'jpeg', 'png', 'gif');
if (in_array($_FILES['image']['type'], $bild) {
mysqli_laden($_FILES);
}
我的英語不太好,對不起。
我正在使用PHP語言,並且在配置文件圖像上傳時遇到問題 我的代碼根據服務器上的類型過濾圖像我擁有的文件不是可接受的類型,始終來自相同的IP。
我認爲這是因爲我的類型檢查,但不知道。請幫忙!
$bild = array('jpg', 'jpeg', 'png', 'gif');
if (in_array($_FILES['image']['type'], $bild) {
mysqli_laden($_FILES);
}
我假定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);
}
希望這有助於
不確定,但我認爲它是'$ finfo-> file(FILEINFO_MIME,$圖片);' – putvande
@putvande:編號http://us1.php。 net/finfo_file或'$ finfo = new finfo(FILEINFO_MIME); $ image_inf = $ finfo-> file($ image);' – AbraCadaver
你是對的,正在尋找錯誤的功能。 – putvande
也許[這](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