• ベストアンサー

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

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

  • PHP
  • 回答数3
  • ありがとう数4

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

  • ベストアンサー
  • 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

  • Javascriptフォーム形成

    javascriptを使って入力フォームを形成しようと考えています。 PHPからテキストボックスの数を8、テキストエリアの数を6と送って8それぞれの入力フォームを作成したいです。動的にフォーム形成したいです。 こんなことできますかね? 教えて下さい。よろしくお願いします。

  • Javascriptでテキストエリアにタグの制限をかけたいです。

    フォームで、テキストエリアの作成をしましたが、 迷惑メールで、テキストエリアにタグを入れて来るようになってしまったのですが、 テキストエリアへ、タグが入らないようにする、javascriptとかはありますでしょうか? あれば教えて下さい。

  • PHP フォームについて

    PHP初心者です。HTMLとPHPを使って、アンケートフォームを作っています。 ネットで色々と調べていたのですが、基本の構成がわからないので教えてください。 HTMLとPHPの別々のファイルで構成されているフォームと、HTMLにPHPを書き込みをしてHTMLの1つのファイルで構成しているものなどがありました。どの方法でやるとよいのでしょうか? また、同じ内容でもPHPの書き方が違うような感じがするのですが、PHPには同じ動作でも沢山の書き方があるのでしょうか?ウェブサイトによって書き方が違うので少し混乱しています。 [アンケートフォーム内容] テキスト・複数行のテキスト・メール・ラジオボックス・チェックボックス・添付ファイル(添付ファイルは難しいのであれば、無しにします)のフォームの部品をいれたいです。 [動作] 1、顧客がアンケートフォームの入力 2、入力内容を私のメールに転送する のシンプルな動作です。 また、ラジオボタンやチェックボックスをつけると、PHPの構文が難しくなるのでしょうか? 宜しくお願いします。

    • ベストアンサー
    • PHP
  • タグは読み込ませず、改行は読み込ませたい

    PHPでフォームを作成してますが、 htmlspecialcharsを使用すれば、タグがタグのまま表示されました。 nl2brを使用すれば、改行され、タグが読み込まれて表示されました。 テキストエリアにタグを入れると、 そのままタグが表示され、 (<a href="/" style="background-image: url(&quot;/top/images/logo/logo_fj.jpg&quot;);"><span>OKWave</span></a>) 入力時にユーザーが改行したら、改行して表示させたいです。 (あああ えええ ううう) 何か方法はありますでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • access 登録したデータを修正するフォーム

     accessで、データを登録するフォームを作成しました。次にそのデータを修正をするフォームを作成しようとしましたが、うまくいきません。 私の考えた修正方法例 1、「検索フォーム」を作成し、「登録ID」を入力させる。 2、クエリを利用し「登録ID」で抽出する。 3、クエリで得た修正対象のデータを「修正フォーム」に表示させる。 しかしこの方法では、「修正フォーム」を”閉じる”事と”修正(上書き)”が同時になってしまいます。(「修正フォーム」を開いて、間違えた入力をしてしまった場合、後戻りができない。) どのような手順で登録したデータの修正を行えばよいのでしょうか?

  • PHP版フォームメール

    メール送信フォームを管理画面で項目等を指定すれば自動で生成(HTMLを)できいくつでも簡単にフォームメールを作成できるPHP限定で探してます。 自動生成ということでフリーソフトでは流石になさそうですが最低限以下の3つを満たすシンプルなものでも構いません。どこかにありますでしょうか? ◆必須の機能 ・入力フォーム→確認画面→送信完了  の流れのフォームメール ・必須項目を設定できる ・フォーム送信後、ユーザと管理者へメールできる ・必須項目が未入力時のみ次画面でエラー画面を表示 ◆できれば欲しい機能 テキスト入力以外に、ラジオやチェックボックスやテキストエリアなども生成できる よろしくお願いします。

    • 締切済み
    • PHP
  • PHP 入力フォームにて半角スペースが削除されてし

    △:半角スペース 入力フォームにて、テキストエリアに 「△あいうえお△かき」と入力すると 「あいうえお△かき」 と先頭の半角スペースが削除されて登録されてしまいます。 削除せず、そのまま「△あいうえお△かき」と登録する方法はあるのでしょうか?

    • ベストアンサー
    • PHP
  • PHPで名前入力フォーム作成

    PHPで名前入力フォームのプログラムを 作成するという問題を教えてください。 『テキストボックスに名前を入力してPOSTで送信するページを作成し、 ▪︎名前が入力されている場合は「ようこそ◯◯さん」 ▪︎名前が入力されていない場合は「名前を入力してください」 と表示するプログラムを作成してください。 POSTでデータを送信するファイルと受信するファイルは、別々に作成してください。 画面イメージは以下のようになります。』

    • ベストアンサー
    • PHP
  • 【php】フォームの作成をもっと楽にできないものか

    phpで、フォームを作成する時 入力フォームの作成、データの受け渡し、バリデーション処理 これでよろしいですか?画面の作成、DBへのインサート、と 非常に手間がかかります。 フィールドが1個増えるだけでまた、また1個1個足していかないといけません。 フレームワーク(codeigniter)なんかも使ってみましたが バリデーション処理やセキュリティが補助されるだけで 基本的な手間は変わりません。 このPHPでのフォーム作成をもっと簡単に、直感的に作成できるような ツールや、ライブラリなんかはないものなのでしょうか?

    • ベストアンサー
    • PHP
  • phpmyadminにタグを格納するには

    (1)テキストエリアに入力 <textarea rows="4" cols="40" name="data"><?= $arr['data'] ?></textarea> (2)phpmyadminのデータ更新 $sql = "update basis set data = '{$arr[data]}' "; $result=mysql_db_query("{$DbName}", "{$sql}"); 上記の流れで、(1)のテキストエリア入力欄にhtmlのタグ(<a>とか)を入力してphpmyadminに データを格納したいのですが、うまくいきません。テキストエリアにタグを使うことは できないのでしょうか?

    • ベストアンサー
    • PHP

専門家に質問してみよう