2014-09-27 6 views
0

Итак, у меня есть форма, это форма статьи, где есть заголовок, содержимое, изображение (для отображения выбранного изображения с ввода с помощью javascript) и ввода (для выбора изображения), и я используювходной файл пустой обработки

$upload_errors = array(
    // http://www.php.net/manual/en/features.file-upload.errors.php 
    UPLOAD_ERR_OK    => "No errors.", 
    UPLOAD_ERR_INI_SIZE  => "Larger than upload_max_filesize.", 
    UPLOAD_ERR_FORM_SIZE => "Larger than form MAX_FILE_SIZE.", 
    UPLOAD_ERR_PARTIAL  => "Partial upload.", 
    UPLOAD_ERR_NO_FILE  => "No file.", 
    UPLOAD_ERR_NO_TMP_DIR => "No temporary directory.", 
    UPLOAD_ERR_CANT_WRITE => "Can't write to disk.", 
    UPLOAD_ERR_EXTENSION => "File upload stopped by extension." 
); 

, чтобы проверить, если мой входной файл, имеющий ошибку, и она отлично работает для добавления новой статьи ...

Но что, если я хочу изменить мою статью? обычно я буду использовать одну и ту же форму, но повторю выбранное значение статьи и все отображаемое, оно отображает заголовок, содержимое, изображение, но не с входным файлом, и я знаю, что это проблема безопасности, поэтому, например, я хочу просто изменить заголовок статьи, i вы получите ошибку «Нет файла», так как я отправляю все содержимое моей формы, включая входной файл ... так ли какая-либо передовая практика для такого рода проблем? может быть какой-то способ indentify если я не выбрать любое изображение, то я просто передать его и не показывая какую-то ошибку ...

и вот как я обрабатывать ошибку

$error = $_FILES['upload_file']['error']; 
if ($error != 1) { 
    $information->id = $_POST['id']; 
    $information->name = $_POST['name']; 
    $name = $_POST['name']; 
    $information->upload_image($_FILES['upload_file']['tmp_name']); 

    $content = $_POST['content']; 
    $entity_content = htmlentities($content); 
    $entity_content = stripslashes(str_replace('\r\n', '',$entity_content)); 
    $information->content = $entity_content; 
    try{ 
     if($information->save()){ 
      if(isset($_POST['simpan'])){ 
       redirect_to("show_information.php"); 
      } 
     }else{ 
      $message = "failed to change information"; 
     } 
    }catch(PDOException $e){ 
     $message = "failed to change information"; 
     error_notice($e); 
    } 
}else{ 
    $message = $upload_errors[$error]; 
} 

так, что мне нужно, чтобы сделать, чтобы обойти проверку ошибки, если нет ввода?

+0

вы можете добавить флажок, и если его проверили, вы запустите другой блок ошибок, запустите еще один выше, возможно? – Parody

+0

В вашем тесте проверьте, существует ли статья; если это так, забудьте о входном файле: '' if ($ error! = 1 или article_exists ($ _ POST ['id']) === true) '' принятие '' article_exists() '' возвращает '' true'' если статья существует. Не '' upload_image() '' в таком случае. – Xenos

+0

, так что нет способа справиться с этим, не добавляя флажок или что-то в мою форму? я просто думаю, что самый простой способ для пользователя использовать мою веб-форму .... :( – PUCUK

ответ

0

так что я просто получить лучшее решение для этого .... это на самом деле очень легко

$error = $_FILES['upload_file']['error']; 
if ($error == 0 || $error == 4) { 
    if($error != 4) 
    //do the uploading 
} 

и в моей загрузки/сохранения класса я просто нужно проверить

if(!empty($image)) 
    // do move_uploaded_to 
    // do the saving with replacement of $image 
else 
    // do the saving without $image 

$ изображения просто мой заполнитель, чтобы поместить имя/путь изображения в базу данных mysql