3

WYSIWYGエディタ(TinyMCE)を使ったブログを作りました。ブログ投稿を作成して投稿すると、MySQL データベースに保存されます。その後、投稿は別のページによって引き出されます。ほとんどの人にとって簡単なことだと思います。

私のテスト サーバーでは問題なく動作していたので、別のサーバーに切り替えたところ、ブログの表示ページで画像が正しく表示されなくなりました。

imgのURLを調べたところ、こんな感じでした。

<img src="\"/img/parking1.png\"" alt="\"\"">

私はそれを行う方法を書いていませんが、引用符を () エスケープしているようです。

私の最後のサーバーではこれを行わず、うまく機能したので、サーバー(ホスティング)のセキュリティの問題だと思います。

それらを削除して、空白に置き換えようとしました:

$cleanpost = str_replace('\', '',$post);

$postDB からプルされたデータはどこにありますか。それは悪い構文であり、引用符の間にバックスラッシュを入れると壊れます。

誰でもこれを行う方法を教えてもらえますか? それとも、これが私がすべきことだと考えるのは正しいですか?

どうもありがとう。

編集:ブログ投稿挿入用の PHP コード

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


    $nowdate = new DateTime('NOW');
    $thisdate = $nowdate->format('Y-m-d H:i:s');
    $post = $_POST['blogpost'];
    $title = $_POST['posttitle'];
    $status = 'yes';




    try {

        $conn = new PDO('mysql:host=host;dbname=dbname', $username, $password);
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $stmt = $conn->prepare('INSERT INTO blogposts(posttext, thisdate, posttitle, active) VALUES(:post, :postdate, :posttitle, :status)');
        $stmt->execute(array(
            ':post'=>$post, ':postdate'=>$thisdate, ':posttitle'=>$title, ':status'=>$status
        ));

      //echo $stmt->rowCount(); // 1
    } catch(PDOException $e) {
        echo 'Error: ' . $e->getMessage();
        echo 'died';


    };

}
4

2 に答える 2

3

stripslashes()文字列のエスケープを解除するために使用できます。

$post = stripslashes($post);
于 2013-07-05T15:27:32.530 に答える