2016-01-26 3 views
0

Вам нужна ваша помощь. Ситуация следующая. У меня простая форма с некоторыми входами. пользователь заполняет форму и может загрузить или нет свой логотип. Но в этом коде, когда я нажимаю кнопку отправки без логотипа, есть ошибка. Итак, вопрос в том, как я могу решить эту проблему и разрешить пользователям отправлять эту форму и без загрузки файла? БОЛЬШОЕ СПАСИБО!!форма с и без загрузки файла (php)

<? 
    if(isset($_POST['add'])){  
    $title = sf($_POST['title']); 
    $company = sf($_POST['company']); 
    $city = sf($_POST['city']); 

    $path = '../img/logo'; 
    // Get extension 
    $extension = strtolower(substr(strrchr($_FILES['logo']['name'], '.'), 1)); 

    $blacklist = array(".php", ".phtml", ".php3", ".php4", ".html", ".htm"); 
    foreach ($blacklist as $item) 
    if(preg_match("/$item\$/i", $_FILES['logo']['name'])) exit; 
    $type = $_FILES['logo']['type']; 
    $size = $_FILES['logo']['size']; 
    $filename = DFileHelper::getRandomFileName($path, $extension); 
    $target = $path . '/' . $filename . '.' . $extension; 
    if (($type != "image/jpg") && ($type != "image/jpeg")) exit; 
    if ($size > 10485760) exit; 

    move_uploaded_file($_FILES['logo']['tmp_name'], $target); 

    $jb = $mysql->prepare("INSERT INTO tb_job (j_title, j_company, j_city, j_logo) VALUES (?, ?, ?, ?)"); 
    $jb->execute(array($title, $compnay, $city, $filename,)); 

    echo 'OK'; 
    Header("Refresh: 2, /jobs/cv"); 
    } 

    ?> 

<form enctype="multipart/form-data" method="post" action="">    
    <input type="text" name="title" /> 
    <input type="text" name="compnay" /> 
    <input type="text" name="city" /> 
    <input type="file" name="logo" /> 
    <input type="submit" value="OK" /> 
</form> 
+1

вы должны поставить условие, если форма имеет логотип. например 'if (! empty ($ _ FILES))' – roullie

+0

какие строки я должен помещать в это условие? все строки? –

+0

Вы должны проверить, равен ли '$ _FILES ['logo'] ['error']' 'UPLOAD_ERR_NO_FILE'. Если это так, то файл не был выбран для загрузки. –

ответ

0

вы должны поставить условие, если форма имеет логотип

<? 
    if(isset($_POST['add'])){  
    $title = sf($_POST['title']); 
    $company = sf($_POST['company']); 
    $city = sf($_POST['city']); 
    $filename = ""; 

    if(!empty($_FILES) && !$_FILES['logo']['error']){ // check if there is a "logo" 
     $path = '../img/logo'; 
     // Get extension 
     $extension = strtolower(substr(strrchr($_FILES['logo']['name'], '.'), 1)); 

     $blacklist = array(".php", ".phtml", ".php3", ".php4", ".html", ".htm"); 
     foreach ($blacklist as $item) 
     if(preg_match("/$item\$/i", $_FILES['logo']['name'])) exit; 
     $type = $_FILES['logo']['type']; 
     $size = $_FILES['logo']['size']; 
     $filename = DFileHelper::getRandomFileName($path, $extension); 
     $target = $path . '/' . $filename . '.' . $extension; 
     if (($type != "image/jpg") && ($type != "image/jpeg")) exit; 
     if ($size > 10485760) exit; 

     move_uploaded_file($_FILES['logo']['tmp_name'], $target); 
    } 

    $jb = $mysql->prepare("INSERT INTO tb_job (j_title, j_company, j_city, j_logo) VALUES (?, ?, ?, ?)"); 
    $jb->execute(array($title, $compnay, $city, $filename,)); 

    echo 'OK'; 
    Header("Refresh: 2, /jobs/cv"); 
    } 

?> 
+0

МНОГО СПАСИБО !! конечно, просто устал за последние 26 часов)) –

+0

Ну, в моем случае у меня всегда был файл в '$ _FILES', даже если я не выбрал файл для загрузки. Поэтому мне пришлось проверить, была ли ошибка, чтобы определить, был ли выбран файл. –

+0

@YaStudio проблем нет. :) рад, что я помог, и что 26 часов не нужно подниматься выше. :) – roullie

0
if (isset($_FILES["example"])){ 
    echo true; 
}else{ 
    echo false; 
} 
Смежные вопросы