• ベストアンサー

HTMLで入力されたデータをPOSTで受け取るときに値がおかしくなる

HTMLのテキスト画面に下記のような記号列をいれて、 "#'\ 次画面でPOSTの値を表示すると、 \"#\'\\ になってしまいます。 DBに入れることを考えてはいるのですが、何かよい方法はないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

php.ini の設定でマジッククオータ(magic_quotes_gpc)がオンになっていると GPC(GET POST COOKIE)で値入力が行われた場合、' " \には すべてバックスラッシュで自動的にエスケープされます。 これを回避するには stripslashes()関数を利用するか php.iniのmagic_quotes_gpcをFalseに設定してください。 しかし、これは安全装置のようなもので 特にSQL文を発行する際に'や"など(他にもあります。)の文字を エスケープしてやらないとSQLインジェクションという脆弱性が生まれてしまいますので 十分注意してください。 (正規表現などによる入力値チェックも必要ですね。) 噂によるとkakaku.comの不正アクセスもSQLインジェクションでの 攻撃であるとも言われているようです。 ※PHP4.2.3以前の場合はスクリプトの中にini_set("magic_quotes_gpc", 0)を挿入すると一時的に解除できます。 stripslashes()の例 <? echo stripslashes($_POST['text']); ?>

aiurai54
質問者

お礼

ありがとうございます。無事にできました!!

関連するQ&A