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]