0

私はしばらくの間これに苦労してきました.どういうわけかJQueryはテキストの引用符をエスケープしています.それは問題ありません.

テスト.PHP

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
    <title></title>
    <meta http-equiv="content-type" content="text/html;charset=utf-8" />
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
</head>
<body>
    <form id="testform" action="testoutput.php" method="post">
        <input type="text" name="data" id="data" />
        <input type="submit" />
    </form>

    <div name="output" id="output"><b>The Output</b></div>

<script>
$(document).ready(function() {
    $('#testform').submit(function () {
        $data = $('#data').val();
        $.ajax({
            url: 'testoutput.php', 
            type: 'POST',
            data: "data=" + $data,
            success: function(response) {
              $('#output').html(response); 
            }
          });
        return false;
    });
});
</script>

</body>
</html>

testoutput.php

<?php
    $data = $_POST['data'];

    echo $data;
?>

さて、フォームに「OK」のようなものを書くと、出力に「OK」と表示されます次のようなことを試してみました。

$data = escape($('#data').val());

リクエストが送信されたときに引用符が存在しないようにするために、どういうわけか ajax リクエストもそれを回避しています。ここで何か不足していますか?

エスケープは気にしませんが、JQuery がこれを行うのはなぜですか?バックグラウンドでエンコード/デコード/エスケープが行われるのはなぜですか?

4

2 に答える 2

1

stripslashesおそらく必要なツールですが、スラッシュを削除する前に、魔法の引用符がオンになっていることを確認してください。

構成が異なる新しいシステムにコードを転送したことがある場合は、コードを追跡するのにかなりの時間がかかります..

if (get_magic_quotes_gpc()) {
    // Do your stripslashes here.
}

http://php.net/manual/en/function.get-magic-quotes-gpc.php

于 2012-09-05T21:54:33.523 に答える