0

私はこのコードをかなり前に作成しましたが、毎日使用した後、特定の種類のデータが入力されないことに気付き始めました。たとえば、http://en.wikipedia.org/wiki/Pangramからすべてのパナグラムをコピーすると、機能しません。定義されたエラー「データの送信エラー」が表示されます。PHP自体から「実際の」エラーは発生しません。なぜこれが適切に機能しないのでしょうか? 助けてくれてありがとう。見えない変数..
$db = mysqli_connect('localhost','xx','xxx','xxxx') or die('error with connection');

提出システム

session_start();
if(!isset($_SESSION['user_id'])){
    header('Location: login.php');
    exit();
}
include('../includes/db_connect.php');
if(isset($_POST['submit'])){
    $newTitle = $_POST['newTitle'];
    $newPost = $_POST['newPost'];
    $newPostPreview = $_POST['newPostPreview'];
    $newCategory = $_POST['newCategory'];
    if(!empty($newPost))
        if(!empty($newTitle))
            if(!empty($newPostPreview)){
    $sql="INSERT INTO posts  (title, body, post_preview, category_id, posted)
VALUES('$newTitle', '$newPost', '$newPostPreview', '$newCategory', (now()))";
    $query = $db->query($sql);
    if($query){
            echo "Post entered to database";
        }else{
            echo "Error Submitting the data";
        }
    }else{
        echo "One Or more Required forms was not filled!";
    }
}

テキストエリアなど

    <br><textarea name="newPostPreview" placeholder="Post Preview(Will Be Displayed on the Index Page)" cols="100"  rows="10"/></textarea>
<br><textarea name="newPost" placeholder="Post Text" cols="100"  rows="10"/></textarea><br>

<input type="submit" name="submit" value="submit"/>    

プレーンテキストと英語のものだけでうまく動作することに注意してください.

4

1 に答える 1

1

このタイプの問題は、通常、特殊文字を含む文字列を挿入しようとしたときに発生します。そのため、ポスト値にアクセスするときに、次のような php 関数 mysql_real_escape_string() を使用することをお勧めします。

$newTitle = mysql_real_escape_string($_POST['newTitle']);

$newPost = mysql_real_escape_string($_POST['newPost']);

$newPostPreview = mysql_real_escape_string($_POST['newPostPreview']);

$newCategory = mysql_real_escape_string($_POST['newCategory']);

これがうまくいくことを願っています

ありがとう

于 2013-09-30T14:17:17.367 に答える