PHP验证单个表单域然后全部

时间:2015-09-03 01:25:19

标签: php forms

我的简单php表单验证脚本:

$email      = (isset($_POST['email'])) ? $_POST['email'] : '' ;
$password       = (isset($_POST['password'])) ? $_POST['password'] : '' ;
$fname      = (isset($_POST['fname'])) ? $_POST['fname'] : '' ;
$lname      = (isset($_POST['lname'])) ? $_POST['lname'] : '' ;

if (!empty($email) && !empty($password) && !empty($fname) && !empty($lname)) {
    $auth->createAccount($email, $password, $fname, $lname);
}

由于某些原因,它对我来说看起来不太好。

如何检查每个表单字段以指示哪一个是需要填写的字段,然后在调用createAccount()函数之前检查以确保填写所有字段。

注意:createAccount()函数会清理输入,因此无需在此处执行此操作。

2 个答案:

答案 0 :(得分:2)

我所见过的最常见的处理方法是创建一个数组:

if (!$_POST['email']) {$errors[] = 'Email field is empty.';}
if (!$_POST['password']) {$errors[] = 'Password field is empty.';}
if (!$_POST['fname']) {$errors[] = 'First name field is empty.';}
if (!$_POST['lname']) {$errors[] = 'Last name field is empty.';}

然后遍历错误以显示它们:

foreach ($errors as $error) {
    echo $error.'<br>';
}

答案 1 :(得分:2)

试试这个:

<?php
$form_names = array(
    'email' => 'e-mail', 
    'password' => 'password',
    'fname' => 'firstname',
    'lname' => 'lastname'
); //So that the user understands the errors better
$errors = array();
foreach ($_POST as $field=>$val) {
    if (empty($val)) {
        array_push($errors, 'Please fill out ' . $form_names[$field]);
    }
}
if (count($errors) == 0) {
    //No errors call the submit PHP function
}
else {
    $string = implode('<br/>', $errors);
    echo '<p style="color:red;">' . $string . '</p>';
}
?>

然而,挫折是表单名称应该适合以可理解的方式回显给用户。由于某些可能需要空格,您可以为连接到其实际的表单名称创建一个数组,并使用该值通过回显给用户。 $good_name = $form_names[$field]