0

によるリクエストでHTMLコード(変数target)を送信しようとしていますが、データベースに入力する前に、次の方法で再度エンコードしています。AJAXescape(target)

$post=target recieved on PHP page by POST
$post= htmlentities($_POST['posttext']);
$post = mysql_real_escape_string($post);

MySqlから読み返しながらhtml_entity_decode($post)、目的の出力を投稿するために使用しています。

問題:

私のローカルApacheサーバーではすべて正常に動作していますが、同じコードをオンラインサーバーにアップロードすると、出力の特殊文字がいくつか続き\ます.

例えば。

私のローカルサーバー上。

awk '/<ca>/{f=1;next}/<\/ca>/{f=0}f' $filename > ca.crt
awk '/<cert>/{f=1;next}/<\/cert>/{f=0}f' $filename > client.crt
awk '/<key>/{f=1;next}/<\/key>/{f=0}f' $filename > client.key

オンラインサーバー上。

awk \'/<ca>/{f=1;next}/<\\/ca>/{f=0}f\' $filename > ca.crt
awk \'/<cert>/{f=1;next}/<\\/cert>/{f=0}f\' $filename > client.crt
awk \'/<key>/{f=1;next}/<\\/key>/{f=0}f\' $filename > client.key

何か不足していますか?ヘルプはありますか?

4

1 に答える 1

0

データベースに挿入するためだけに html エンティティをエンコードしないでください。CPUサイクルの無駄であり、SQLインジェクションから保護するために何もしません.

オンライン サーバーがmagic_quotes有効になっている可能性があります。つまり、サーバーの構成が適切でないか、古いものになっている可能性があります。magic_quotes は、PHP への入力に含まれる引用符を自動エスケープします。これは、何かを PHP に送信してからデータベースに入れたいと思う人はいないだろうという愚かな仮定に基づいています。

于 2013-07-12T19:21:05.767 に答える