我的简单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()
函数会清理输入,因此无需在此处执行此操作。
答案 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]