2016-10-20 8 views
-1

So habe ich ein einfaches Formular erstellt, das die eingegebenen Daten an eine Tabelle senden soll. Das Problem, das ich habe, ist immer dann, wenn die Anzahl der Zeichen im Feld 'content' über einer bestimmten Zahl liegt. Ich drücke submit und alle Felder sind leer, und keine Daten werden an die Tabelle gesendet. Ich sollte eine Nachricht bekommen, die sagt "Post veröffentlicht erfolgreich" einmal eingereicht, aber es passiert nicht aus dem oben genannten Grund und ich habe keine Ahnung warum.Formulardaten werden nicht korrekt übermittelt

Ich muss dann zu localhost gehen und das Feld dort bearbeiten. Hier ist mein Code:

<?php 
include("includes/connect.php"); 

if(isset($_POST['submit'])) { 

    $post_title = $_POST['title']; 
    $post_date = date('Y-m-d'); 
    $post_author = $_POST['author']; 
    $post_keywords = $_POST['keywords']; 
    $post_content = $_POST['content']; 
    $post_image = $_FILES['image']['name']; 
    $image_tmp = $_FILES['image']['tmp_name']; 


    if($post_title == '' or $post_keywords == '' or $post_content == '' 
    or $post_author == '') { 

     echo "<script>alert('Please fill the empty fields!')</script>"; 

     exit(); 
    } 
    else { 

     move_uploaded_file($image_tmp, "../images/$post_image"); 

     $insert_query = "INSERT INTO `posts` 
     (post_title, post_date, post_author, post_image, 
     post_keywords, post_content) 
     values ('$post_title', '$post_date', '$post_author', '$post_image', 
     '$post_keywords', '$post_content')"; 

     if(mysqli_query($connect, $insert_query)) { 

      echo "<center><h1>Post Published Successfully!</h1></center>"; 
     } 
    } 

} 
?> 

<body> 

    <form method = "post" action = "insert_post.php" enctype = "multipart/form-data"> 

     <table width = "600" align = "center"> 
      <tr> 
       <td align="center" colspan = "6"><h1 style = "font-family: 'Fjalla One'; color: #575757;">Insert new post here</h1></td> 
      </tr> 

      <tr><!--TITLE--> 
       <td align = "right" size = "30px" style = "font-family: 'Fjalla One'; color: #575757; font-size: 20px;">Post Title:</td> 
       <td><input type = "text" name = "title"></td> 
      </tr> 

      <tr><!--AUTHOR--> 
       <td align = "right" size = "30px" style = "font-family: 'Fjalla One'; color: #575757; font-size: 20px;">Post Author:</td> 
       <td><input type = "text" name = "author"></td> 
      </tr> 

      <tr><!--KEYWORDS--> 
       <td align = "right" size = "30px" style = "font-family: 'Fjalla One'; color: #575757; font-size: 20px;">Post Keywords:</td> 
       <td><input type = "text" name = "keywords"></td> 
      </tr> 

      <tr><!--IMAGE--> 
       <td align = "right" style = "font-family: 'Fjalla One'; color: #575757; font-size: 20px;">Post Image:</td> 
       <td><input type = "file" name = "image"></td> 
      </tr> 

      <tr><!--CONTENT--> 
       <td align = "right" style = "font-family: 'Fjalla One'; color: #575757; font-size: 20px;">Post Content</td> 
       <td><textarea name = "content" cols = "40" rows = "20"></textarea></td> 
      </tr> 

      <tr> 
       <td align = "center" colspan = "6"><input type = "submit" name = "submit" value = "Publish" ></td> 
      </tr> 

    </form> 
+0

Wie hoch ist Ihr POST-Limit für den localhost-Server? – JBithell

+2

Randnotiz: Sie sollten parametrisierte Abfragen verwenden. In seinem aktuellen Zustand ist Ihr Code anfällig für SQL-Injektionen. Stellen Sie sich jemanden vor, der etwas wie "; DROP TABLE-Beiträge; - " –

+0

Was ist der Spaltentyp für die Spalte" post_image "? und was willst du hier machen, benutze die datei "name" oder das bild selbst? –

Antwort

1

Versuchen einschließlich einiger MySQL Fehlerbehandlung Sie sich eine bessere Vorstellung des Problems zu geben - etwa so:

<?php 
include("includes/connect.php"); 

if(isset($_POST['submit'])) { 

    $post_title = $_POST['title']; 
    $post_date = date('Y-m-d'); 
    $post_author = $_POST['author']; 
    $post_keywords = $_POST['keywords']; 
    $post_content = $_POST['content']; 
    $post_image = $_FILES['image']['name']; 
    $image_tmp = $_FILES['image']['tmp_name']; 


    if($post_title == '' or $post_keywords == '' or $post_content == '' 
    or $post_author == '') { 

     echo "<script>alert('Please fill the empty fields!')</script>"; 

     exit(); 
    } 
    else { 

     move_uploaded_file($image_tmp, "../images/$post_image"); 

     $insert_query = "INSERT INTO `posts` 
     (post_title, post_date, post_author, post_image, 
     post_keywords, post_content) 
     values ('$post_title', '$post_date', '$post_author', '$post_image', 
     '$post_keywords', '$post_content')"; 

     if(mysqli_query($connect, $insert_query)) { 

      echo "<center><h1>Post Published Successfully!</h1></center>"; 
     } else echo "MySQL Error description: " . mysqli_error($connect); 
    } 

} 
?> 

Diese Mitteilung nicht in einer Produktionsumgebung verwenden, wie Sie shouldn Es werden keine technischen Fehlermeldungen für die Endbenutzer angezeigt - insbesondere, da Sie nicht mit den unformatierten Eingaben umgehen und Sie sehr anfällig für SQL-Injection sind.


EDIT:

Op klebte Fehlermeldung, zeigt es ein ' Zeichen in der Zeichenfolge wurde behauptet verursacht MySQL-Fehler - Lösung ist jede Variable durch mysqli_real_escape_string($connect, $variable); vorgelegt passieren.

+0

Danke. Ich werde das jetzt versuchen –

+0

MySQL Fehlerbeschreibung: Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MariaDB-Server-Version entspricht, um die richtige Syntax für die Verwendung in der Nähe zu finden und noch mehr Neuigkeiten zu erhalten, um die Fans zu begeistern. In einem aktuellen Post auf ihre soziale Me 'at line 5 –

+0

Das ist der Fehler, den ich jetzt bekomme –

Verwandte Themen