1

さて、私はこれを何時間もいじっていますが、まだ正しく理解できないので、皆さんに尋ねます.

私はhtmlにテキストエリアを持っています。値はajax(jquery)を使用してphpに送信し、データベースに代入し、phpを使用して再度印刷できるようにする必要があります。問題は、印刷するときに、入力したものと100%同じになるようにしたいということです'\

私が今それを行う方法:

var comment = escape( box.find('#newCommentArea').val() ).replace(new RegExp( "\\+", "g" ),"%2B");

値はどこにありますかbox.find('#newCommentArea').val()。ajax関数を使ってphpに渡しcomment、POSTデータとして送信します。

firebug を使用すると、次のように表示されます。comment=asdf%27asdf

PHPで印刷$_POST['comment']すると私にasdf\'asdf

追加\が問題です。そして私はそれを取り除く必要があります。

いずれにせよ、PHPではjavascriptエスケープだけが安全ではないため、私もそうしますurlencode()

そして、印刷するときに使用しますrawurldecode()

この方法が良いかどうか、またはもっとうまくできるかどうかを指摘していただけますか。

\そして、どうすれば新しいインを取り除くことができますか$_POST['comment']

前もって感謝します、

枕闇

4

2 に答える 2

2

スラッシュは自動的に追加され、PHP またはサーバーの設定を変更できます (ただし、通常は変更しないでください)。stripslashes()( PHP: stripslashes )を使用して元に戻すことができます。この関数は、データベースに格納する前ではなく、表示する直前に使用してください。

すでに送信されている場合は、PHP で urlencode する必要はありません (送信前に urlencode が必要です)。データベースが安全であることを確認するだけで済みます。

残念ながら、URL エンコーディングの最適な方法についてアドバイスすることはできません。私自身、混乱する傾向があります :) 他の誰かがそれを明確にしてくれることを願っています。

于 2012-04-20T09:52:53.723 に答える
1

データベースに保存されたテキストを印刷すると、 の\'ように表示され'ます。したがって、値をデータベースに保存しても問題ありません\'

さらに、jQuery を使用してリクエストを行う場合、'リクエストの前に文字をエスケープする必要はありません。これは適切に圧縮する必要があります。

ただし、データベースに保存する前に、PHP のテキストを慎重にサニタイズする必要があります ( mysql_real_escape_string http://php.net/manual/en/function.mysql-real-escape-string.phpを使用します)。

于 2012-04-20T09:50:53.407 に答える