空のフォーム入力でも `isset($_POST['mail'])` が常に True を返すのはなぜですか?

Linda Hamilton
リリース: 2024-11-09 03:53:02
オリジナル
284 人が閲覧しました

Why Does `isset($_POST[

フォーム入力検証の「isset $_POST」動作を理解する

Web 開発でフォームを使用する場合、ユーザー入力を検証することが重要です。データの整合性を確保します。一般的なシナリオの 1 つは、次に進む前に、電子メール アドレスなどの入力フィールドが入力されているかどうかをチェックすることです。

特定のシナリオでは、開発者は、検証メカニズムが「はい、メールは次のとおりです」と継続的に返されるという問題に直面しています。ユーザーが空のフォームを送信した場合でも、「set」を実行します。なぜこのようなことが起こるのかを理解するために、isset($_POST["mail"]) の動作を詳しく見てみましょう。

isset($_POST["mail"]) は何をしますか?

PHP の isset() 関数は、指定された変数が設定されているかどうか、つまり、値が空であっても値が割り当てられているかどうかをチェックします。フォーム送信の場合、$_POST["mail"] は、「mail」という名前の入力フィールドに入力された値を表します。

なぜ常に設定されるのですか?

テキスト入力フィールドを含むほとんどのフォーム入力は、空かどうかに関係なく、常に設定されます。これは、フォームが送信されると、そのすべての入力 (空の入力も含む) が $_POST スーパーグローバル配列に含まれるためです。

検証の修正

正確に検証するには入力が空の場合は、!empty() 演算子を使用する必要があります。 !empty() 演算子は、変数が空でない場合 (空でない文字列とゼロ以外の数値の両方を含む) true を返します。

したがって、変更された検証コードは次のようになります。

if (!empty($_POST["mail"])) {
    echo "Yes, mail is set";    
} else {  
    echo "No, mail is not set";
}
ログイン後にコピー

この修正により、入力フィールドに空ではない値が含まれている場合にのみ「メールが設定されています」メッセージが表示されるようになります。

以上が空のフォーム入力でも `isset($_POST['mail'])` が常に True を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート