0

コメント ボックスを作成して実行していますが、使用するとその前に'が作成\されることに気付きました。たとえば、「how's」と書くと、投稿先のデータベースとページに表示されるときの両方で「how\'s」と表示されます。stripslashesスラッシュを取り除くはずだと思っていた「本文」テキストを表示するときに、この関数を使用しています。

それが役立つ場合、私のサーバーはphpバージョン5.3.6を実行しています。

このコードを使用して、コメント ボックスの本文からデータベースにテキストを投稿しています。

$body = mysql_prep($_POST['body']);

使用している関数は次のとおりです。

function mysql_prep($string) {
    global $connection;

    $escaped_string = mysqli_real_escape_string($connection, $string);
    return $escaped_string;
}

補足: これに答える必要はありませんが、これは、ユーザーが入力するテキストをハッカーや悪者などから保護するために使用している機能です。私はそれをうまくやっていますか、それとも問題にさらされていますか? (この機能が原因である可能性のあるこのスラッシュの問題に加えて)

これは、テキストを表示するために使用しているコードです。

<div id="comments">
    <?php while($comment_text = mysqli_fetch_assoc($display_comments)) { ?>
    <div class="comment" style="margin-bottom: 2em;">
        <div class="author">
            <b><?php echo htmlentities($comment_text["author"]); ?>:</b>
        </div>
        <div class="meta-info" style="font-size: 0.8em;">
            <?php echo datetime_to_text($comment_text["created"]); ?>
        </div>
        <div class="body">
            <?php echo stripslashes($comment_text["body"], '<strong><em><p>'); ?>
        </div>
    </div>
    <?php } ?>  
    <?php if(empty($display_comments)) { echo "No Comments."; } ?>
</div>

どんな助けやアドバイスも大歓迎です、ありがとう!!

4

1 に答える 1

0

あなたの問題は、魔法の引用符がオンになっていることです。このアプローチを使用して、すべてのスラッシュを再帰的に削除できます。

ファイルmagic_quotes_filter.php

<?php

if (function_exists('set_magic_quotes_runtime') && get_magic_quotes_gpc()) {

    function stripslashes_deep($value) {
        $value = is_array($value) ?
                    array_map('stripslashes_deep', $value) :
                    stripslashes($value);

        return $value;
    }

    $_POST = array_map('stripslashes_deep', $_POST);
    $_GET = array_map('stripslashes_deep', $_GET);
    $_COOKIE = array_map('stripslashes_deep', $_COOKIE);
    $_REQUEST = array_map('stripslashes_deep', $_REQUEST);  
}

include('path/to/magic_quotes_filter.php')次に、リクエスト HTTP 変数をどこで処理するかを簡単に説明できます。

あなたの場合は、スクリプトの先頭に含めるだけです。

于 2014-01-10T08:16:36.370 に答える