2016-08-22 2 views
-2

Если пользователь загружает неправильный файл, то если оператор сбросит $name на пустой. В чем проблема в следующем коде?if заявление сброс формы данных переменная

if(isset($_POST['submit'])){ 
     $conn= new mysqli('localhost','root','','dilip'); 
     if(!$conn){ 
       die("Not connect".mysqli_error); 
     } 
     $stm = $conn->prepare("Insert into comment (Name, email, Message, Image) values (?, ?, ?, ?)"); 
     $stm->bind_param('ssss',$name,$email,$message,$image); 


     $name = $_POST['name']; 
     $message = $_POST['readerInput']; 
     $email = $_POST['email']; 
     $image='upload/comment/default.jpg'; 
     $time = date("s"); 


     //if(isset($_FILES['image'])){ 
     if(is_uploaded_file($_FILES['image']['tmp_name'])){ 
       $tmp_image = $_FILES['image']['size']; 
       $finfo = new finfo(FILEINFO_MIME_TYPE); 
       $file = $finfo->file($_FILES['image']['tmp_name']); //This line checks MIME Type of uploaded image 

       if($file!=='image/jpeg' && $file !=='image/gif' || $tmp_image > 1024*1024*2){ //1024*1024*2 = 2MB 
        echo "Upload your Profile Image in jpg/gif format and lower than 2mb. Otherwise continue without Image."; 
       } 

       else{ 

        $photo = move_uploaded_file($_FILES['image']['tmp_name'],'upload/comment/'.$name.$time.'.jpg'); 
        $image = 'upload/comment/'.$name.$time.'.jpg'; 
        echo '<script> alert("Your file is accepted.")</script>'; 
        $stm->execute(); 

        $message = 'Your Comment'; 
        $name = 'Your Name'; 
        $email = 'Your eMail'; 

       } 
    }else{ 
       $stm->execute(); 
       $message = 'Your Comment'; 
       $name = 'Your Name'; 
       $email = 'Your eMail'; 
    } 
} 
+2

Вопрос с одной строкой и огромный блок кода дают небольшую информацию о том, что может быть проблемой. Каков точный ввод? Какой оператор 'if' сбрасывает значение? Было бы намного полезнее, если бы вы объяснили, что происходит более подробно, и уменьшите количество кода до минимума, демонстрируя ошибку (и добавьте некоторое объяснение, если оно еще больше, чем несколько строк). – mingos

+0

if ($ file! == 'image/jpeg' && $ file! == 'image/gif' || $ tmp_image> 1024 * 1024 * 2) {// 1024 * 1024 * 2 = 2MB echo "Загрузить свой Изображение профиля в формате jpg/gif и ниже 2mb. В противном случае продолжайте без изображения. "; } – PramodJha

ответ

1

Попробуйте нижеследующий фрагмент. Вы готовите инструкцию insert перед инициализацией переменной и кодом загрузки изображения. Я переместил код ниже кода загрузки файла.

if(isset($_POST['submit'])){ 
     $flag = 0; 
     $conn= new mysqli('localhost','root','','dilip'); 
     if(!$conn){ 
       die("Not connect".mysqli_error); 
     } 

     $name = $_POST['name']; 
     $message = $_POST['readerInput']; 
     $email = $_POST['email']; 
     $image='upload/comment/default.jpg'; 
     $time = date("s"); 


     //if(isset($_FILES['image'])){ 
     if(is_uploaded_file($_FILES['image']['tmp_name'])){ 
       $tmp_image = $_FILES['image']['size']; 
       $finfo = new finfo(FILEINFO_MIME_TYPE); 
       $file = $finfo->file($_FILES['image']['tmp_name']); //This line checks MIME Type of uploaded image 

       if($file!=='image/jpeg' && $file !=='image/gif' || $tmp_image > 1024*1024*2){ //1024*1024*2 = 2MB 
        echo "Upload your Profile Image in jpg/gif format and lower than 2mb. Otherwise continue without Image."; 
        $flag = 1; 
       }else{ 
        $photo = move_uploaded_file($_FILES['image']['tmp_name'],'upload/comment/'.$name.$time.'.jpg'); 
        $image = 'upload/comment/'.$name.$time.'.jpg'; 
        echo '<script> alert("Your file is accepted.")</script>'; 
       } 
    } 

    $stm = $conn->prepare("Insert into comment (Name, email, Message, Image) values (?, ?, ?, ?)"); 
    $stm->bind_param($name,$email,$message,$image); 
    if($flag==0){ 
     $stm->execute(); 
    }  
} 
+0

Код работает нормально. данные вставляются в таблицу базы данных. Проблема в том, что: если мы загружаем неправильный файл, это означает, что файл jpeg/gif или больше, ** если операторы ** выполняют и перезагружают форму. Я хочу дать другое изменение для загрузки изображения, не переименовывая остальные. – PramodJha

+0

Если пользователь загружает неправильное изображение, тогда запись не должна быть заинтересована. И если пользователь загружает правильное изображение или пользователь не выбирает какое-либо изображение, тогда следует вставлять только запись. Я прав? –

+0

да, вы правы – PramodJha

Смежные вопросы