2012-03-29 6 views
0

私は、HTMLフォーム上のファイルアップロードのPHPバリデートステートメントを持っています。ファイルがイメージでない場合、またはファイル拡張子がサポートされていない場合は、エラーが出力されます。 ifステートメントには、$_FILESが空であれば、それを検証し、適切なエラーを表示すると述べています。問題は、ファイルのアップロードが必須入力ではないが、$_FILES変数が空であっても「ファイルはイメージではないようです」というエラーメッセージが表示されることです。ここにあればifファイルのアップロードを検証してもif文は表示されますか?

error_reporting (E_ALL^E_NOTICE); 

if($_FILES != "") // [START FILE UPLOADED] 
{ 
    include 'image_validate.php'; 

    $file = $_FILES['eventPhoto']; 

    $file_name = $file['name']; 

    $error = ''; // Empty 

    // Get File Extension (if any) 
    $ext = strtolower(substr(strrchr($file_name, "."), 1)); 

    // Check for a correct extension. The image file hasn't an extension? Add one 
    if($validation_type == 1) 
    { 
     $file_info = getimagesize($_FILES['eventPhoto']['tmp_name']); 

     if(empty($file_info)) // No Image? 
     { 
      $error .= "<br/><div class='submitEventErrors'>The uploaded file doesn't seem to be an image.</div><br/>"; 
     } 
     else // An Image? 
     { 
      $file_mime = $file_info['mime']; 

      if($ext == 'jpc' || $ext == 'jpx' || $ext == 'jb2') 
      { 
       $extension = $ext; 
      } 
      else 
      { 
       $extension = ($mime[$file_mime] == 'jpeg') ? 'jpg' : $mime[$file_mime]; 
      } 

      if(!$extension) 
      { 
       $extension = ''; 
       $file_name = str_replace('.', '', $file_name); 
      } 
     } 
    } 

    else if($validation_type == 2) 
    { 
     if(!in_array($ext, $image_extensions_allowed)) 
     { 
      $exts = implode(', ',$image_extensions_allowed); 
      $error .= "<br/><div class='submitEventErrors'>You must upload a file with one of the following extensions: ".$exts."</div>"; 
     } 

     $extension = $ext; 
    } 

    if($error) 
    { 
     echo '<font color="red">'.$error.'</font>'; 
    } 

    if($error == "") // No errors were found? 
    { 
     $new_file_name = strtolower($file_name); 
     $new_file_name = str_replace(' ', '-', $new_file_name); 
     $new_file_name = substr($new_file_name, 0, -strlen($ext)); 
     $new_file_name .= $extension; 

    } 
    else 
    { 
     @unlink($file['tmp_name']); 
    } 

} // [END FILE UPLOADED] 

答えて

関連する問題