• ベストアンサー

$_POSTのデータ

$_POSTでわたってきたデータで"が\"となっているのですが、これはどういう働きなのでしょうか? 通常の"にする方法はありますか?

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

  • ベストアンサー
  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.2

" や ' はPHPではちょっと特殊な意味があります 例えば、_POST["name"]の中身が 名"前 だったとします そのまま echo $_POST["name"]; としたらどうなるでしょう PHPが理解する内容としては echo "名"前"; となります これではエラーが出て当然ですよね ですから、 ” を文字列として扱うために前に¥をつけて echo "名\"前"; とし、 名と前の間にある " を「文字列の一部として扱いなさい」と解釈させるわけです "や'を文字として扱いたいときには \を前につけるという約束事があります \ そのものも文字として扱いたいときには \\ とします _POSTや_GET等で送られてくるデータすべてに対して特殊な文字が含まれている場合に自動的に\をつけるようにしているのが php.iniの中の magic_quotes_gpc = On となっている部分です 自動で付けたくない場合は magic_quotes_gpc = Offにしてください この場合、なんらかの方法で 特殊文字をエスケープ(¥をつける)しないと、セキュリティ的に大変危険になる可能性がありますので十分に注意してください PHPの標準関数の中に同じように特殊な文字に対して¥をつける addslashes() という関数がありますが、2バイト文字(ここでは日本語)に対して深刻がバグがあるので使わない様にしてください ちなみに¥を取り外すのは stripslashes() です http://jp.php.net/stripslashes

その他の回答 (1)

  • Yeti21
  • ベストアンサー率47% (396/830)
回答No.1

一部の特殊記号は、リテラルとしての識別のためにバックスラッシュでエスケープされます。 下記の設定(php.ini)でエスケープされなくなると思いますが、文字列を扱うときには注意が 必要になります。 文中ではダブルコーテーション(")は使用しないようにするのが無難です。 他にも思わぬ問題が出る可能性が有りますので注意して下さい。 magic_quotes_gpc FALSE

参考URL:
http://www.php.net/manual/ja/ref.info.php#ini.magic-quotes-gpc

関連するQ&A

専門家に質問してみよう