У меня есть контактная форма php, которая в настоящее время проверяет вложение для типа файла и размера файла, , но Мне также нужно проверить, не забыл ли пользователь приложить изображение в целом (т.е. , прикрепление фотографий должно быть «обязательным полем» и при необходимости отправить сообщение «пожалуйста, прикрепите фотографию»).PHP-форма - проверить, был ли файл прикреплен
Форма в вопросе:
http://www.cucinadellanonna.com/nominate-form.php
Это часть кода, который проверяет вложение ... Я попытался добавить несколько вещей, но безрезультатно, так что я просто колоть во тьме.
//file upload validation
if(!empty($this->fileupload_fields))
{
if(!$this->ValidateFileUploads())
{
$ret = false;
}
}
return $ret;
}
function ValidateFileType($field_name,$valid_filetypes)
{
$ret=true;
$info = pathinfo($_FILES[$field_name]['name']);
$extn = $info['extension'];
$extn = strtolower($extn);
$arr_valid_filetypes= explode(',',$valid_filetypes);
if(!in_array($extn,$arr_valid_filetypes))
{
$this->add_error("Valid file types are: $valid_filetypes");
$ret=false;
}
return $ret;
}
function ValidateFileSize($field_name,$max_size)
{
$size_of_uploaded_file =
$_FILES[$field_name]["size"]/1024;//size in KBs
if($size_of_uploaded_file > $max_size)
{
$this->add_error("The file is too big. File size should be less than $max_size KB");
return false;
}
return true;
}
function IsFileUploaded($field_name)
{
if(empty($_FILES[$field_name]['name']))
{
return false;
}
if(!is_uploaded_file($_FILES[$field_name]['tmp_name']))
{
return false;
}
return true;
}
function ValidateFileUploads()
{
$ret=true;
foreach($this->fileupload_fields as $upld_field)
{
$field_name = $upld_field["name"];
$valid_filetypes = $upld_field["file_types"];
if(!$this->IsFileUploaded($field_name))
{
continue;
}
if($_FILES[$field_name]["error"] != 0)
{
$this->add_error("Error in file upload; Error code:".$_FILES[$field_name]["error"]);
$ret=false;
}
if(!empty($valid_filetypes) &&
!$this->ValidateFileType($field_name,$valid_filetypes))
{
$ret=false;
}
if(!empty($upld_field["maxsize"]) &&
$upld_field["maxsize"]>0)
{
if(!$this->ValidateFileSize($field_name,$upld_field["maxsize"]))
{
$ret=false;
}
}
}
return $ret;
}
Я смущен, чтобы признать, что я не достаточно PHP отбивные, чтобы сформировать заявление ... Я пытался обратный инжиниринг кучу других заявлений, но я просто колоть в темноте. –
Я обновил свой ответ, он включает в себя модификацию вашей функции. – Flosculus
Где в этой инструкции я бы поставил сообщение об ошибке '$ this-> add_error'? –