0

フォーム内のすべてのフィールドが必要になるようにコードを設定しましたが、何らかの理由でテキスト、電子メール、およびパスワードの入力タイプにのみ適用されます。私の質問は、ラジオ ボタン、選択ボックス、およびチェックボックスをフォーム内の必須フィールドにする方法を教えてください。これが私のコードです:

<form action="" method="post">  
     <ul id="register">
        <li>
          <input type="text" name="first_name" placeholder="First Name">
        </li>

        <li>
        <input type="text" name="last_name" placeholder="Last Name">
        </li>

       <li>
        <input type="email" name="email" placeholder="Email"><br><br>
        </li>

        <li>
      <input type="password" name="password" placeholder="Password">
        </li>

        <li>
        <input type="radio" name="sex" value="male">Male
        <input type="radio" name="sex" value="female">Female
        </li>
        <li>

        Birthday:

            <select name="month">
                    <option value="January">January</option>
                    //all the other month options
                </select>

                <select name="day">
                    <option value="1">1</option>
                    //all the other days of the month
                </select>

                <select name="year">
                    <option value="2013">2013</option>
                    //ton of year options here
                </select><br><br>
            </li>
            <li>
                <input type="checkbox" name="terms_of_service" value="termsofservice">Terms of Service<br><br>
            </li>
            <li>
                <input type="submit" name="registrationform" value="Sign up">
            </li>
        </ul>
    </form>

    <?php


    if (empty($_POST) === false) {
        $required_fields = array('first_name', 'last_name', 'email', 'password', 'sex', 'birthday', 'terms_of_service');
        foreach ($_POST as $key=>$value) {
            if (empty($value) && in_array($key, $required_fields) === true) {
                $errors[] = 'You didn\'t fill in all of the categories.';
                break 1;
            }
        }
    }
    print_r($errors);


    ?>
4

4 に答える 4

1

これを試して..

 if(isset($_POST['registrationform'])){
       $required_fields = array( /* all required fields including radio, select and 
checkboxes  as associative array with key as actual name and value as field name */);
       foreach ( $required_fields as $key=>$value) {
             if (!isset($_POST[$value]) || $_POST[$value]=='') {
                  $errors[$value] = $key." is required";

                }
       }

       print_r($errors);
    }
于 2013-01-05T09:36:52.780 に答える
1

サーバー側とクライアント側の検証:

サーバー側の検証はサーバーで処理されます。一部のデータはクライアント側で検証できず、サーバー側で検証する必要があります。たとえば、データベース内の2つの日付の間の日付。

クライアント側の検証は、フォームを送信する前にクライアント側で処理されます。クライアント側の検証を使用する利点は、検証がクライアントマシン自体で処理されるため、ネットワークトラフィックが減少することです。たとえば、電子メールのisnumericisdateなど。

サーバー側の検証(PHP)が必要な場合は、次のような条件を記述する必要があります。

if($_SERVER['REQUEST_METHOD'] == 'POST'){
    $error_msg = array();
    if(!isset($_POST['your_radio_button_name'])){
        $error_msg[] = "Enter the required fields";
    }
    if(!isset($_POST['your_checkbox_button_name'])){
        $error_msg[] = "Enter the required fields";
    }
    if(!isset($_POST['your_select_box_name'])){
        $error_msg[] = "Enter the required fields";
    }

    if(isset($error_msg) && count($error_msg) == 0){
        // do some form processing
    }
    else{
        // redirect to the form again.
    }
} 

PHPでのフォーム検証の詳細を読む:

http://phpmaster.com/form-validation-with-php/

また、クライアント側の検証が必要な場合は、次のようなオプションを利用できます。

次の記事を確認してください。

http://www.jeasyui.com/tutorial/form/form3.php

お役に立てば幸いです。

于 2013-01-05T09:41:20.623 に答える
1

これを試して:

<form action="" method="post">  
    <ul id="register">
        <li><input type="text" name="first_name" placeholder="First Name"></li>
        <li><input type="text" name="last_name" placeholder="Last Name"></li>
        <li><input type="email" name="email" placeholder="Email"><br><br></li>
        <li><input type="password" name="password" placeholder="Password"></li>
        <li>
            <input type="radio" name="sex" value="male">Male
            <input type="radio" name="sex" value="female">Female
        </li>
        <li>
            Birthday:
            <select name="month">
                <option value="">Choose</option>
                <option value="January">January</option>
                <option value="February">February</option>
            </select>

            <select name="day">
                <option value="">Choose</option>
                <option value="1">1</option>
                <option value="2">2</option>
            </select>

            <select name="year">
                <option value="">Choose</option>
                <option value="2012">2012</option>
                <option value="2013">2013</option>
            </select><br><br>
        </li>
        <li><input type="checkbox" name="terms_of_service" value="termsofservice">Terms of Service<br><br></li>
        <li><input type="submit" name="registrationform" value="Sign up"></li>
    </ul>
</form>

<?php
if (!empty($_POST)) {
    $required_fields = array('first_name', 'last_name', 'email', 'password', 'sex', 'month', 'day', 'year', 'terms_of_service');
    foreach ($required_fields as $value) {
        if (empty($_POST["$value"])) {
            $errors .= "$value is required<br>";
        }
    }            
    echo $errors;
}
?>
于 2013-01-05T10:04:33.993 に答える
0

Ultimate からの回答は完璧であり、必要なものです。

サーバーとローカルの検証とは何かを説明します。

ローカル検証は、HTML コードまたは JavaScript で入力をチェックする場合です。ブラウザでチェックするので速いです。しかし、あなたのページにアクセスした人は、技術的なスキルがほとんどなくても、その検証を無効にすることができます.

サーバーの検証は、php コードの入力をチェックするときに行われます。( の間にあるコード<?php and ?>)。次に、サーバーでチェックされます。そのため、あなたのページにアクセスした人は、その検証を無効にすることはできません.

とにかく、両方を使用することをお勧めします。ローカル検証は高速で、サーバー検証は安全だからです。

ローカル検証を追加するには、このリンクで非常によく説明されています: http://www.w3schools.com/html5/att_input_required.asp

[コードの最初の部分で、doctype が html5 を使用するように設定されていることを確認してください:

<!DOCTYPE html>
<html>
<head>
...blablabalblabla more html code...

次に、検証付きの HTML は次のようになります。

<form action="" method="post">  
 <ul id="register">
    <li>
      <input type="text" name="first_name" placeholder="First Name" required="required">
    </li>

    <li>
    <input type="text" name="last_name" placeholder="Last Name" required="required">
    </li>

   <li>
    <input type="email" name="email" placeholder="Email" required="required"><br><br>
    </li>

    <li>
  <input type="password" name="password" placeholder="Password" required="required">
    </li>

    <li>
    <input type="radio" name="sex" value="male" required="required">Male
    <input type="radio" name="sex" value="female" required="required">Female
    </li>
    <li>
...

これが html5 ローカル検証です。

于 2013-01-05T10:09:20.973 に答える