2012-04-26 16 views
0

私はphp配列を持っています($ _FILE [fails])タイプが "image/jpeg"または "image/jpg"の場合、thous名だけを出力する必要があります。 ...type = 'image/jpeg'

array(5) { ["name"]=> array(4) { [0]=> string(16) "3970867_460s.jpg" [1]=> string(12) "DSCI0783.JPG" [2]=> string(8) "dump.php" [3]=> string(0) "" } 
      ["type"]=> array(4) { [0]=> string(10) "image/jpeg" [1]=> string(10) "image/jpeg" [2]=> string(24) "application/octet-stream" [3]=> string(0) "" } 
      ["tmp_name"]=> array(4) { [0]=> string(27) "C:\Windows\Temp\phpC9C9.tmp" [1]=> string(27) "C:\Windows\Temp\phpC9DA.tmp" [2]=> string(27) "C:\Windows\Temp\phpC9DB.tmp" [3]=> string(0) "" } 
      ["error"]=> array(4) { [0]=> int(0) [1]=> int(0) [2]=> int(0) [3]=> int(4) } ["size"]=> array(4) { [0]=> int(101011) [1]=> int(55354) [2]=> int(12290) [3]=> int(0) } 
     } 

どうすればいいですか? foreachを使用して ?

foreach ($_FILES["fails"] as $x => $y) { 
echo $y->....something here? 
    if(($y->... == 'image/jpeg') AND (..)) {} 
} 

ありがとう!

+0

を試してみてください。もう少し信頼できる答えを得るには['getimagesize()'](http://php.net/manual/en/function.getimagesize.php)を使用してください。しかし、それでもあなたはXSSに対して脆弱です。消毒する信頼できる唯一の方法は、ピクセルデータを取得して新しい画像を作成することです。 – DaveRandom

答えて

1
for ($i = 0; $i < count($_FILES['fails']['name']); $i++) { 
    if ($_FILES['fails']['type'][$i] == "image/jpeg" || $_FILES['fails']['type'][$i] == "image/jpg") { 
     echo "Name : " . $_FILES['fails']['name'][$i]; 
     echo "Type : " . $_FILES['fails']['type'][$i]; 
    } 
} 

これは、アレイ内のすべての画像/ JPGまたは画像/ JPEGの名前とタイプをエコーし​​ます。

0

はそれを試してみてください。

$output = array(); 
foreach ($_FILES["fails"]['type'] as $k => $type) { 
    if($type == 'image/jpeg' || $type == 'image/jpg') 
     $output[] = $_FILES["fails"]['name'][$k]; 
} 
0

あなたは、クライアントがあなたを送ったというMIMEタイプを信用しないでください

$allowTypes = array (
     "image/jpeg", 
     "image/jpg" 
); // Ad More to list 
$_FILE ['fails'] = array(); 
foreach ($_FILES ['image'] ['tmp_name'] as $key => $val) { 
    $fileName = $_FILES ['image'] ['name'] [$key]; 
    $fileType = $_FILES ['image'] ['type'] [$key]; 
    if ($_FILES ["image"] ["error"] [$key] != UPLOAD_ERR_OK) { 
     $_FILE ['fails'] [] = $fileName; 
     continue; 
    } 

    if (! in_array ($fileType, $allowTypes)) { 
     $_FILE ['fails'] [] = $fileName; 
     continue; 
    } 
}