• ベストアンサー

★PHP★フォーム登録時にタグを読み込まない方法

PHPで登録フォーム作成してます。 テキストエリアにタグを入力すると、データが壊れてしまいました。 タグを入力できないようにする方法はありますでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • neko-ten
  • ベストアンサー率55% (1287/2335)
回答No.2

入力側(ブラウザ側)で処理させるとすれば、JavaScriptなりで逐一orSubmit時にチェックするわけですが・・・ 基本的にクライアント側で制御させても無効にできるので、送られてきたデータをチェックするのが普通です。 また、基本的にセキュリティを高めるためにもこういった構文を削除するのは常識になってます。 (スクリプトかけるわけだから、簡単にブラウザクラッシュさせることができます。) PHPであれば、HTML構文を削除したりする構文が存在します。 strip_tags:HTMLタグを削除する http://www.php.net/manual/ja/function.strip-tags.php htmlspecialchars:代替文字に変換 http://php.net/manual/ja/function.htmlspecialchars.php ただ、どちらも100%安全ではないです。 たとえば、strip_tagsの場合、特定のタグを許可することが可能です。 ただ、許可したタグに含まれる属性などは検証しません。 そのため、許可したタグにスクリプトを埋め込んだ場合などは実行される危険性が高まります。 後者は、ブラウザによっては文字化けします。 入力時の検証だけでなく、出力を行う際にも、できればチェックを入れたいですね。

a-----n
質問者

お礼

ご連絡ありがとうございます。 分かりやすい説明で助かります。 解決しました。 ありがとうございました。

その他の回答 (2)

  • takubou05
  • ベストアンサー率52% (11/21)
回答No.3

入力できないの意味によりますが、 phpの strip_tags()を使えばhtmlタグやphpタグを除去することができます。 ただ、テキストエリアに顔文字などで "><"と入力されると、予想外の動作がおきます。 あとは害のない文字に変換する。 いわゆるHTMLエスケープです。 htmlspecialcharsの関数で行えます。 <>をそれぞれ'&lt;'  '&gt;'に変換してくれます。

a-----n
質問者

お礼

ご連絡ありがとうございます。 簡単にできるのでしたね。 助かりました★ ありがとうございました。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

状況がわかりませんが・・・ 表示のときにhtmlspecialchars()するだけでは?

参考URL:
http://www.php.net/manual/ja/function.htmlspecialchars.php
a-----n
質問者

お礼

ご連絡ありがとうございます。 解決しました。 ありがとうございました。

関連するQ&A