この章と次の章では、PHPを使用したフォームデータの検証方法を説明します。
PHPのフォームを処理する際は、セキュリティを考慮してください!
このページでは、セキュリティを考慮したPHPのフォーム処理方法を説明します。 フォームデータの適切な検証は、フォームをハッカーやスパマーから守るために重要です!
この章で取扱うHTMLフォームには、さまざまな入力フィールドがあります: 必須およびオプションのテキストフィールド、ラジオボタン、送信ボタンなど:
フォームの検証規則は次のとおりです:
フィールド | 検証の規定 |
---|---|
名前 | 必須。+ 文字と空白のみを含まなければならない |
必須。+ 妥当なメールアドレス(@ と .)を含まなければならない | |
Website | 任意。存在する場合は、妥当な URL を含まなければならない |
Comment | 任意。複数行入力フィールド(テキストエリア) |
Gender | 必須。1つを選択しなければならない |
まず、フォームのプレーンHTMLコードを見てみましょう:
name、email、website フィールドはテキスト入力要素で、comment フィールドはテキストエリアです。 HTMLコードは次の通りです:
Name: <input type="text" name="name">
E-mail: <input type="text" name="email">
Website: <input type="text" name="website">
Comment: <textarea name="comment" rows="5" cols="40"></textarea>
genderフィールドはラジオボタンで、HTMLコードは次の通りです:
Gender:
<input type="radio" name="gender"
value="female">Female
<input type="radio" name="gender" value="male">Male
フォームのHTMLコードは次の通りです:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
フォームを送信すると、フォームデータは method="post" で送信されます。
$_SERVER["PHP_SELF"] 変数とは何ですか?
$_SERVER["PHP_SELF"] は、現在実行中のスクリプトのファイル名を返すスーパーグローバル変数です。
したがって、$_SERVER["PHP_SELF"]は、別のページにジャンプするのではなく、送信されたフォームデータをページ自体に送信します。 これにより、フォームと同じページにエラーメッセージが表示されます。
htmlspecialchars() 関数とは何ですか?
htmlspecialchars() 関数は、特殊文字をHTMLエンティティに変換します。これは、< や > のようなHTML文字を、< や > 置換する
することを意味します。
これにより、フォームにHTMLまたはJavascriptコードを挿入した攻撃(クロスサイトスクリプティング攻撃)を防御します。