電子書籍の厳選無料作品が豊富!

phpで 

$_GET['a'] = stripslashes($_GET['a']);
$_GET['a'] = mysql_real_escape_string($_GET['a']);
$_GET['a'] → インサート

と途中に
stripslashes
mysql_real_escape_string
をはさんでから
GETやPOSTを取得してるんですが改行が改行コードに変わってしまいます。

例えば質問フォームとかで 

----------------------------------------
質問内容
----------------------------------------
なんたら
かんたら

 ↓ サブミット


----------------------------------------
投稿確認
----------------------------------------
なんたら\n\rかんたら


みたいなかんじです。

一旦文字コードをEUCにかえてから
mysql_real_escape_stringを挟んだりしたりもしてみてますが
改行が改行コードになってしまいます。

A 回答 (1件)

mysql_real_escape_string()を使用するのはあくまでのSQLを発行するときですね



フォームで投稿→最低限のエスケープして確認画面→インジェクション対策してSQLで
DBに投入

の流れですすめてください。

つまりDB上ではエスケープ文字は文字列として認識されていますので
抽出時には逆に、stripslashes()なりで戻さないといけません
html上に表示するならさらにはnl2br()や、htmlspecialchars()などが
必要になります
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
DB向けに加工されたものをページ上に表示させてしまっていたのが
原因だったんですね。

お礼日時:2011/05/28 11:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!