2012-04-10 48 views
1

私は昨日、画像をディレクトリにアップロードするためのアップロードファイルをコーディングし始めました。問題は、私はしても非のファイルのすべての時間をアップロードすることができるということですアレイの助けを借りて画像をアップロードする

if(!empty($_FILES['image']['tmp_name'])){ 

       $allowed_extension = array('jpg', 'jpeg', 'png', 'bmp', 'tiff', 'gif'); 

       foreach($_FILES['image']['name'] as $key => $array_value){ 

        $file_name = $_FILES['image']['name'][$key]; 
        $file_size = $_FILES['image']['size'][$key]; 
      $file_tmp = $_FILES['image']['tmp_name'][$key]; 

        $file_extension = strtolower(end(explode('.', $file_name))); 
        if (in_array($file_extension, $allowed_extension) === false){ 
         $errors[] = 'file is not accepted'; 
         } 

        if ($file_size > 2097152){ 
         $errors[] = 'maxsize: 2MB'; 
         } 

        $path = "a/b/c/"; 
        $uploadfile = $path."/".basename($_FILES['image']['name'][$key]); 

        if (move_uploaded_file($_FILES['image']['tmp_name'][$key], $uploadfile)){ 
         echo "Das Bildmaterial wurde hochgeladen."; 
         } 
       } 
     } 

:私は、私は私が今使っているポイントになったことより良い方法を処理するために配列を使用する必要があることを認識して受け入れられた終了が与えられる。私はなぜerrormessageをアップロードする代わりにアップロードが発生したのか理解できません。私は、コードに許可された拡張を埋め込むことで、より多くのセキュリティに到達するのが好きです。私に何が間違っているか教えてくれる人がいるなら、本当に感謝します。どうもありがとう。

答えて

1

あなたは例外をチェックする2 if文を持っているが、その後彼らと何もしません。

おそらく以下の情報が役に立ちますか?

if(!empty($_FILES['image']['tmp_name'])){ 

    $allowed_extension = array('jpg', 'jpeg', 'png', 'bmp', 'tiff', 'gif'); 

    foreach($_FILES['image']['name'] as $key => $array_value){ 

     $file_name = $_FILES['image']['name'][$key]; 
     $file_size = $_FILES['image']['size'][$key]; 
     $file_tmp = $_FILES['image']['tmp_name'][$key]; 

     $errors = array(); 
     $file_extension = strtolower(end(explode('.', $file_name))); 
     if (in_array($file_extension, $allowed_extension) === false){ 
      $errors[] = 'file is not accepted'; 
     } 

     if ($file_size > 2097152){ 
      $errors[] = 'maxsize: 2MB'; 
     } 

     if (count ($errors) == 0) { 
      $path = "a/b/c/"; 
      $uploadfile = $path."/".basename($_FILES['image']['name'][$key]); 

      if (move_uploaded_file($_FILES['image']['tmp_name'][$key], $uploadfile)){ 
       echo "Das Bildmaterial wurde hochgeladen."; 
      } 
     } 
     else { 
      // do stuff with errors 
     } 
    } 
} 
1

あなたは

例えば、「続ける」を使用する必要があり

foreach($_FILES['image']['name'] as $key => $array_value){ 

    $file_name = $_FILES['image']['name'][$key]; 
    $file_size = $_FILES['image']['size'][$key]; 
    $file_tmp = $_FILES['image']['tmp_name'][$key]; 

    $file_extension = strtolower(end(explode('.', $file_name))); 
    if (in_array($file_extension, $allowed_extension) === false){ 
     $errors[] = 'file is not accepted'; 
     continue; 
    } 

    // the rest of your loop goes here 
} 

それは、その後のループで次の画像に移動し、画像をアップロードしません。ここ

詳細情報:http://php.net/manual/en/control-structures.continue.php

関連する問題