2

重複の可能性:
配列に数値 (整数) のみが含まれているかどうかを確認するより簡潔な
方法

10個のフィールドを送信するフォームがあり、そのうち7個を入力する必要があります.PHPでチェックする方法は次のとおりです。

if (!$name || !$phone || !$email || !$mobile || !$email || !$state || !$street || !  $city) {
        echo '<div class="empty_p">You have empty fields!!!</div>';}
else{
        //process order or do something
}

私の質問は次のとおりです。これを行うためのより簡単な方法はありますか? チェックする文字列がさらに多い場合があるため (12-15)

4

7 に答える 7

5

別の可能性:

$elements = array($name, $email, $mobile);
$valid = true;

foreach ($elements as $element) {
    if (empty($element)) {
        $valid = false;
    }
}

if ($valid) {
    // complete
} else {
    // alert! some element is empty
}
于 2012-06-08T14:20:43.950 に答える
3

このようなもの?

foreach($_POST as $key => $value) 
{
    if (empty($_POST[$key]))
    {
        echo '<div class="empty_p">'.$_POST[$key].' is empty.</div>';
    }
}
于 2012-06-08T14:16:39.617 に答える
1

再利用でき、より正確な一般的な検証クラスを作成してみることができます。

擬似コード:

<?

class validateFields {
    $validators = array(
        "name" => array(
            "empty" => array(
                "rule"          => "some regex",
                "errorMessage"  => "name may not be empty"
            ),
            "noNumbers" => array(
                "rule"          => "some regex",
                "errorMessage"  => "No numbers are allowed in the name field"
            )
        ),
        "otherVariable" => array(
            "atLeast50chars" => array(
                "rule"          => "some regex",
                "errorMessage"  => "This field must be at least 50 chars"
            )
        )
    );


    public function Validate($post){
        $errors = array();

        foreach($_POST as $key => $value){
            if(!array_key_exists($key, $validators)) {
                continue;
            }

            foreach($validators[$key] as $validator) {
                if(!preg_match($validator["rule"], $value) {
                    $errors[$key] = $validator["errorMessage"];
                    break;
                }
            }
        }

        return $errors;
    }
}


?>

次に、コードで次のようなことができます。

$errors = Validate($_POST);
foreach($error as $errorMessage) {
    echo $errorMessage . "</br>";
}

もちろん、関連する入力フィールドのすぐ下/横にクラスを持つ div を追加し、そこに $errorMessage をロードして、これを工夫することもできます。そこにはたくさんの例があると確信しています:)

于 2012-06-08T14:42:35.973 に答える
1

最良の方法は、ある種のフォームバリデーターを作成することです。ただし、次の関数を使用できます。

<?php
    function isAnyEmpty() {
        $total = 0;
        $args = func_get_args();
        foreach($args as $arg)
        {
            if(empty($arg)) {
                return true;
            }
        }

        return false;
    }
    $var1 = 1;
    $var2 = 'test';
    $var3 = '';

    if(isAnyEmpty($var1, $var2, $var3)) {
        echo 'empty fields!';
    }
?>
于 2012-06-08T14:24:34.497 に答える
1

Foreachループを書くことができます

  foreach($_POST as $key => $value) 
    {
        if (!isset($_POST[$key]) || empty($_POST[$key])
        {
            echo '<div class="something">You have empty fields!!!</div>';
        }
    }
于 2012-06-08T14:17:43.217 に答える
-1
<input type="text" name="required[first_name]" />
<input type="text" name="required[last_name]" />
...


$required = $_POST['required'];
foreach ($required as $req) {
   $req = trim($req);
   if (empty($req))
      echo 'gotcha!';
}

/* アップデート */

わかった!皆さん、簡単に...

私たちプログラマーが出力されるデータに対して行うすべてのように、型キャストを使用するだけで、より安全にすることができ$id = (int) $_GET['id']ます$username = (string) addslashes($_POST['username'])

$required = (array) $_POST['required'];

そして、投稿フィールドから来るものは何でも来させます。このコードは必要なものを探すだけです。それだ!うーん...

于 2012-06-08T14:15:49.770 に答える