2016-10-20 24 views
-1

私はテーブルに入力されたデータを送信する単純なフォームを作成しました。私が持っている問題は、 'content'フィールドの文字数が特定の数値を超えている場合、submitを押してすべてのフィールドを空にしても、データがテーブルに送られないことです。私は、一度提出された「ポストは正常に公開されました」というメッセージを得るべきですが、それは上記の理由で起こるものではありません。フォームデータが正しく送信されない

私はlocalhostに行き、そこのフィールドを編集する必要があります。ここに私のコードは次のとおりです。自分で問題のより良いアイデアを与えることを扱ういくつかのMySQLエラーを含む

<?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

ローカルホストサーバーのPOST制限はいくらですか? – JBithell

+2

side note:パラメータ化されたクエリを使用する必要があります。現在の状態では、コードにSQLインジェクションが発生しやすくなります。誰かが ''のようなものを載せていると想像してください。 DROP TABLEの投稿。 --' –

+0

'post_image'カラムのカラムタイプは何ですか?あなたはここで何をしたいのですか?ファイル "名前"またはイメージ自体を使用しますか? –

答えて

1

てみてください - このような何か:

<?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); 
    } 

} 
?> 

あなたはshouldnとして本番環境でこれを使用しないでください。エンドユーザーに技術的なエラーメッセージを表示することはできません。特に、生の入力をエスケープしてSQLインジェクションが非常に起こりやすい場合は避けてください。


EDIT:

オペアンプ貼り付けられたエラーメッセージ、それは文字列の'文字はMySQLがエラーを引き起こしかけた示す - ソリューションはmysqli_real_escape_string($connect, $variable);を通じて提出すべての変数を渡すことです。

+0

ありがとうございます。私は今これを試してみます –

+0

MySQLエラーの説明:あなたはSQL構文に誤りがあります。あなたのMariaDBサーバのバージョンに対応したマニュアルをチェックして、正しい構文が近くにあることを確認してください。私の社会的な私の行の最近の記事5行目 –

+0

これは私が今得ているエラーです –

関連する問題