0

サーバー上にある場合でも、jQuery Ajax 経由で投稿したデータがエスケープさmagic_quotes_gpc = offれています。

$_POST(ajaxを使用せずに)から直接データを取得すると、エスケープされずに正常に機能します。しかし、それらを送信すると、それらをajax回避できます。

$.ajax({
url: 'includes/updateDb.php',
type: 'POST',
data: {
    id:  $this.attr('data-id'),  
    text: $this.html()
}
});

test's->test\'s

それは機能ですか、それともバグですか?どのように進めればよいですか?サーバー上で文字列を削除しPHPますか?

4

3 に答える 3

0

AJAX はapplication/x-www-form-urlencoded、デフォルトで jQuery のようにエンコードされます。PHP ではutf8_decode、エスケープされていないデータを取得するために使用します。

jQueryのサイトより

contentTypeString
Default: 'application/x-www-form-urlencoded; charset=UTF-8'
于 2012-08-31T11:59:00.097 に答える
0

phpinfo()がオフになっていることを示していたにもかかわらずmagic_quotes_gpc、それらは実際にオンになっていることが判明しました。php.iniこれは、最上位のフォルダーのみに影響を与える共有ホスティング機能でした。私はこれに気づきませんでした。

お詫びと助けてくれてありがとう -)

于 2012-12-02T10:55:24.503 に答える
0

送信前に回答されたように、jQuery.ajax( url [, settings] )デフォルトでのみ送信されます。これは、エンコードされたデータを変更できることを意味します..これは、99%の確率でさらなる問題を防ぐのに役立ちます...彼らが使用するデフォルトのエンコーディングは

application/x-www-form-urlencoded; charset=UTF-8

これを任意のタイプのコンテンツに変更できるようになりました。たとえばtext/javascript、それが送信するデータ タイプであったとします。しかし、通常、php に送信しようとしているのは文字列または配列です。この配列は、両方の言語が理解できる方法でエンコードする必要があります...バージョン 5.2.0 から、php は java からデータを送信する最良の方法である json エンコードをサポートします。したがって、jsonでエンコードされた数値をphpに送信できます。これは次のようになります

{"foo-bar": 12345}

そして、それをにjson_decode()変えることを使用して

$json = '{"foo-bar": 12345}' ; 
$obj = json_decode($json);
print $obj->{'foo-bar'}; // will return 12345

したがって、公式にはすべての団体がこの形式を使用して、javascript から php にデータを送信しています。あなた自身のために、ここにphpコードがどのように見えるかの例を示します。たとえば、ユーザー名とパスワードのようなものを送信すると、配列は次のようになります{"id": "234" , "text" : "helloo,/////text////"}

$posted_data = $_POST['id'];
$parsed_data = josn_decode('$posted_data');
echo $parsed_data -> {'text'}; // should print helloo,/////text////
于 2012-09-01T15:40:08.683 に答える