ホームページ >バックエンド開発 >PHPチュートリアル >PHP フォーム検証 -w3school PHP 学習ノート w3school 初心者 w3school 公式 Web サイト w3school チュートリアル ダウンロード
注: PHP でフォームを処理する場合は、データのセキュリティに注意してください
ハッカーの侵入やスパム嫌がらせを防ぐために、HTML フォームを処理する前に送信されたデータを検証することが非常に必要です。
上記の HTML フォームは、次のルールが適用されることを前提としています:
フィールド – 検証ルール
名前 – 必須、文字とスペースを含める必要があります
電子メール – 必須。@ と
を含む有効な電子メール アドレスを含める必要があります。
URL (ウェブサイト) – オプション、入力する場合は有効な URL である必要があります
コメント – オプションの複数行入力フィールド
性別 – 必須、いずれかを選択してください
HTML コードは次のとおりです:
<code><span></<span>head</span>></span><span><<span>body</span>></span><span><<span>form</span><span>action</span>=<span>'test.php'</span><span>method</span>=<span>'post'</span>></span> 姓名:<span><<span>input</span><span>type</span>=<span>'text'</span><span>name</span>=<span>'name'</span> /></span><span><<span>br</span>/></span> 电邮:<span><<span>input</span><span>type</span>=<span>'text'</span><span>name</span>=<span>'email'</span> /></span><span><<span>br</span>/></span> 网址:<span><<span>input</span><span>type</span>=<span>'text'</span><span>name</span>=<span>'website'</span> /></span><span><<span>br</span>/></span> 评论:<span><<span>textarea</span><span>name</span>=<span>'comment'</span><span>rows</span>=<span>3</span><span>cols</span>=<span>21</span>></span><span></<span>textarea</span>></span><span><<span>br</span>/></span> 性别:<span><<span>input</span><span>type</span>=<span>"radio"</span><span>name</span>=<span>'gender'</span><span>value</span>=<span>0</span><span>checked</span>=<span>'checked'</span>/></span>女性 <span><<span>input</span><span>type</span>=<span>"radio"</span><span>name</span>=<span>'gender'</span><span>value</span>=<span>1</span> /></span>男性<span><<span>br</span>/></span><span><<span>input</span><span>type</span>=<span>'submit'</span><span>value</span>=<span>'提交'</span> /></span><span></<span>form</span>></span><span></<span>body</span>></span><span></<span>html</span>></span></code>
このフォームは post メソッドを通じてデータを送信します
PHP 経由でフォーム データを検証する:
一般に、送信されたデータをフィルタリングする場合、htmlspecialchars() 関数を使用してデータを処理し、HTML タグの文字を HTML エンティティに変換します。たとえば、< と > は <code><span><<span>script</span>></span><span>location.href(<span>'http://www.hacked.com'</span>)</span><span></<span>script</span>></span></code>
が <code><span>&</span><span>lt</span>;script<span>&</span><span>gt</span>;location<span>.</span>href(<span>'http://www.hacked.com'</span>)<span>&</span><span>lt</span>;/script<span>&</span><span>gt</span>;</code>
にエスケープされ、送信されたデータは安全になり、ページ コードに損傷を与えることはありません。
さらに、htmlspecialchar() 関数を使用してデータをフィルタリングすることに加えて、次の 2 つのことも行う必要があります:
は、PHP のtripslashes() 関数
<code><span><span><?php</span><span>$name</span>=<span>$email</span>=<span>$website</span>=<span>$comment</span>=<span>''</span>; <span>$gender</span>=<span>0</span>; <span>$name</span>=test_input(<span>$_POST</span>[<span>'name'</span>]); <span>$email</span>=test_input(<span>$_POST</span>[<span>'email'</span>]); <span>$website</span>=test_input(<span>$_POST</span>[<span>'website'</span>]); <span>$comment</span>=test_input(<span>$_POST</span>[<span>'comment'</span>]); <span><span>function</span><span>test_input</span><span>(<span>$data</span>)</span>{</span><span>$data</span>=trim(<span>$data</span>);<span>//去除$data数据两侧多余的空格</span><span>$data</span>=stripslashes(<span>$data</span>);<span>//去除$data中的反斜杠</span><span>$data</span>=htmlspecialchars(<span>$data</span>);<span>//将html标签转以为html实体</span><span>return</span><span>$data</span>; } <span>?></span></span></code>