dポイントプレゼントキャンペーン実施中!

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

A 回答 (3件)

入力側(ブラウザ側)で処理させるとすれば、JavaScriptなりで逐一orSubmit時にチェックするわけですが・・・


基本的にクライアント側で制御させても無効にできるので、送られてきたデータをチェックするのが普通です。

また、基本的にセキュリティを高めるためにもこういった構文を削除するのは常識になってます。
(スクリプトかけるわけだから、簡単にブラウザクラッシュさせることができます。)

PHPであれば、HTML構文を削除したりする構文が存在します。
strip_tags:HTMLタグを削除する
http://www.php.net/manual/ja/function.strip-tags …

htmlspecialchars:代替文字に変換
http://php.net/manual/ja/function.htmlspecialcha …

ただ、どちらも100%安全ではないです。
たとえば、strip_tagsの場合、特定のタグを許可することが可能です。
ただ、許可したタグに含まれる属性などは検証しません。
そのため、許可したタグにスクリプトを埋め込んだ場合などは実行される危険性が高まります。
後者は、ブラウザによっては文字化けします。

入力時の検証だけでなく、出力を行う際にも、できればチェックを入れたいですね。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/11/18 15:32

入力できないの意味によりますが、


phpの strip_tags()を使えばhtmlタグやphpタグを除去することができます。

ただ、テキストエリアに顔文字などで "><"と入力されると、予想外の動作がおきます。

あとは害のない文字に変換する。
いわゆるHTMLエスケープです。
htmlspecialcharsの関数で行えます。

<>をそれぞれ'&lt;'  '&gt;'に変換してくれます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/11/18 15:30

状況がわかりませんが・・・


表示のときにhtmlspecialchars()するだけでは?

参考URL:http://www.php.net/manual/ja/function.htmlspecia …
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/11/18 15:32

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