質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

1134閲覧

問合せフォームのバリデーションについて

june_223

総合スコア17

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2019/08/22 04:37

編集2019/08/22 04:51

お問い合わせ フォームのバリデーションについて 

一般的なwebのお問い合わせフォームを作っていますが、
チェックボックス、セレクトメニュー、ラジオボタンの選択型の項目についても、
値の検証(バリデーション)は必要でしょうか?

htmlのvalueはどんな値でも送信は可能なのでお問い合わせフォームの送信項目は全てバリデーションをかけるべきだと思いますが、必要でしょうか?

該当のソースコード

HTML

1<div> 2連絡先 3<input type="radio" name="contact_environment" value="自宅">自宅 4<input type="radio" name="contact_environment" value="オフィス">オフィス 5<input type="radio" name="contact_environment" value="携帯電話">携帯電話 6</div>

PHP

1if ($_POST['contact_environment'] != '自宅' or $_POST['contact_environment'] != 'オフィス' or $_POST['contact_environment'] != '携帯電話') { 2echo '不正入力です'; 3}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2019/08/22 04:45

投稿に失敗しているようです。 再度編集して更新をかけてください
guest

回答2

0

ベストアンサー

はい。必要です。
サーバーサイドの入力チェックは抜いてはいけません。
どんな値でも送信可能というか、ブラウザ開発ツールで如何様にもHTMLは改ざん可能なので、
ラジオボタンセレクトボックスチェックボックスを指定したからって、それがそのまま来るわけではありません。
nameも変更されて送られてくる可能性もありますし、maxlength属性などで値を指定していてもその値も改ざん可能なのでほぼ意味がありません。

すべてチェックしてください。

投稿2019/08/22 05:01

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

june_223

2019/08/22 05:08

ありがとうございます。全てにバリデーションをかけます!
m.ts10806

2019/08/22 05:32 編集

ただ「要件次第」ということは覚えておいてください。 データベースに保存するならnot null になっている項目に必須チェックをするとか、 サイズの指定があれば何文字以内かチェックするとか。 私の回答は「ラジオボタンだから必須であっても空かどうかのチェックをしなくていいってことではないよ」ということですので。改ざんできる=想定していない値が送られてくる 可能性もあるわけですからね。 選択肢は4つでも5つ目の選択肢が追加されたり、送られるvalueが何万文字になったり、そういうチェックも必要です。
guest

0

フォームの送信項目は全てバリデーションをかけるべきだと思いますが、必要でしょうか?

必要条件かと言えばそうでもないです。
結局匿名の投稿はある程度の汚染されたデータが交じるのは想定しなくてはなりません
投稿されたデータをDBなどに保存するのであればその時点で型を利用して弾くこともできます

ユーザーの誤入力などをさけるサポート機能としては有効だと思います
もちろんセレクトボックスやラジオボタン、チェックボックスなど選択肢がきまっているなら
サーバー側で合致するかどうかのチェックはつけておいて損はないでしょう。

PHP

1<?PHP 2$contact_environment=filter_input(INPUT_POST,"contact_environment",FILTER_VALIDATE_REGEXP,["options"=>["regexp"=>"/^(自宅|オフィス|携帯電話)$/"]]); 3var_dump($contact_environment); 4?> 5<form method="post"> 6<div> 7連絡先 8<label><input type="radio" name="contact_environment" value="自宅">自宅</label> 9<label><input type="radio" name="contact_environment" value="オフィス">オフィス</label> 10<label><input type="radio" name="contact_environment" value="携帯電話">携帯電話</label> 11<label><input type="radio" name="contact_environment" value="">ダミー(空データ)</label> 12<label><input type="radio" name="contact_environment" value="hoge">ダミー(hoge)</label> 13</div> 14<input type="submit" value="send"> 15</form> 16

filter_inputをすれば

  • 当該のパラメータが送られてこなければnull
  • 想定通りの場合はその送られてきたデータ
  • 想定外のデータが来た場合はfalse

が、それぞれ得られるので簡単にバリデートが可能です。

また、選択肢から選ばせる処理自体がユーザーからの誤入力を防ぐわけですし
通常のテキストボックスでもpatternやrequiredなどである程度の
ユーザー補助としてのバリデートは可能です

投稿2019/08/22 05:13

yambejp

総合スコア114784

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問