2011-09-12 22 views
1

興味深い問題が発生しました。私はPHPを提出する場合は、次のように私は、フォームデータを取り込むポストを経由してアクションを持つ「tradtional」道を形成:

headline:I%27m+just+here+for+friends%21 

私が使用して私のDBに追加する前に、データ・サーバ側をエスケープ:mysql_real_escape_stringの($文字列)すべてが素晴らしいです。

私は今、それはこのようになりますjqueries $ .postメソッドを使用して、同じフォームを送信し、それを

$.post("save_data.php", $("#form_id").serialize(), 
    function(data) { 
     // process my results 
    } 
);     

を私のシリアル化データを渡す場合:

headline:I'm+just+here+for+friends! 

mysql_real_escapeコールが実際に動作しません。データが正しくエンコードされているか、正しくエンコードされていないと仮定しているためです。これを回避する方法や、フォームデータをポストする前にエンコードする方法はありますか?ここで

は、私は現在、PHP内のフォームデータを処理しています方法です:見出し:

if ($_SERVER['REQUEST_METHOD'] == "POST") { 
    $result = updateDataEntry($_POST); 
} 

$ _POSTはとして直列化された形式のデータを見て、私はちょうど+ここ+ + +友人のためにしています!私のupdateDataEntryメソッド内でmysql_real_escape_string($ string)を使用しても、DB内にエスケープ文字が追加されています。

+0

jQuery経由で投稿されたデータでmysql_real_escape_stringを呼び出すと何が問題になりますか?それがうまくいかない理由はありません。 –

+0

これは動作しますが、フォームデータを若干異なる形式で送信します(上記を参照)。違いは、DBが特殊文字をエスケープすることです。 – Paul

+0

エスケープされていない文字はありません。どのような場合にDBに挿入されるのかの例を挙げられますか? –

答えて

1

私の髪を引き裂くの数時間後、私は問題を発見した。マジッククオートは私のphp.iniファイルで有効になった。誰がこのに実行される場合は、有効にすることができます

; Magic quotes for incoming GET/POST/Cookie data. 
magic_quotes_gpc = Off 

これですべてが機能していますすばらしいです!

1

あなたの問題を解決するには、このリンクが参考になると思います。

+0

私は現在serializeを使用していますが、単純なフォームの提出と少し違ってデータをフォーマットします – Paul

0

簡単な修正は、常に同じ形式でフォームに送信することです。 2回目に$ .postに渡す前にPHPのhtmlentities()またはhtmlspecialchars()を実行してください。

+0

私はちょっと混乱しています...初めてデータを別のphpファイルに投稿し、htmlentities 2回目の投稿の前に? – Paul

0

mysql_real_escape_string次の文字へプリペンドのバックスラッシュ:\のX00、\ nは、\ R、\、」、 "と\ X1Aは、右だから、%や特殊文字には影響しませんが、文字列を挿入したい場合は?。正確にDBにheadline:I%27m+just+here+for+friends%21ちょうど脱出する前urlencodeでそれをコード化するような。

関連する問題