• ベストアンサー

htmlspecialcharsについて

フォームから送られてきたデータの中に「<」や「>」が含まれていたら htmlspecialcharsを使用してを変換したいのですが、変換されず その原因もわからない状態でおります。 $text=$_POST['text']; $text= htmlspecialchars($text); print"text=$text"; としています。 フォームから「"」を入力すると「\"」と変換されます。 PHPマニュアルなど見ますと「<」は「&lt;」に変換され表示される のでは思っているのですが。 また、preg_replace も試しましたが変換されませんでした。 PHP Version 4.3.10です。 どなたかご教授いただけないでしょうか。お願いします。

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

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

例えばtextに「<」をPOSTした場合、このコードをブラウザから確認した場合「text=<」と表示されると思いますが、ソースを見てもそうなっていますか?ソースを見た時「text=&lt;」となっていれば、正常に動いています。(&は全角で記入しました。) また、「"」をPOSTした場合、\"になるのは、マジッククオートが有効になっているんだと思います。 マジッククオートについては、参考URLをどうぞ。

参考URL:
http://php.s3.to/man/security.magicquotes.html
99Micchi
質問者

お礼

ご回答ありがとうございました。 ソースではきちんと「&lt;」となっておりました。 画面上に表示されるはずと思いこんでしまいましたが、 ソースを見ればよかったんですね。。 なんだかお騒がせしてすみません。

その他の回答 (1)

  • cybert
  • ベストアンサー率56% (18/32)
回答No.2

>フォームから「"」を入力すると「\"」と変換されます。 これは、PHPのmagic_quotes_gpcの働きです。'"/NULLはSQL的に意味のある文字をエスケープするやつです。 >PHPマニュアルなど見ますと「<」は「&lt;」に変換され表示される もし、htmlspecialcharsで変換されないとなると、セキュリティ的にだいぶ面白いことになりそうです。 HTMLソースはどんな感じですか?

99Micchi
質問者

お礼

ご回答ありがとうございました。 ソースではきちんと変換されていました。 どうもすみません。

関連するQ&A