重新验证表单并在编辑后检查每个输入

时间:2017-08-31 08:33:23

标签: php

我创建了包含必填字段,数字和有效电子邮件等验证过程的字段。

它在提交后同时显示错误,但在仅更改其中一个字段时,它接受并且不会重新验证另一个字段。

示例
name =错误:必填字段
电话=错误:仅限数字
email =错误:不是有效的电子邮件

在我仅更正了电子邮件之后,它接受并继续提交而不重新检查其他人。 请看我的代码。提前谢谢

<?php
include("conn/db.php");
function renderForm($name ='',  $tel = '', $email ='', $error='',  $error2='', $error3='')
{
?>
<html >
<head> <title>Form</title></head>
<body>

<?php
if ($error != '') {
echo $error
}
if ($error2 != '') {
echo $error2;
}  
if ($error3 != '') {
echo  $error3;
}
?>

<form action="" method="post">

Name : <input type = "text" class = "form-control" name = "name_text"  value="<?php echo $name; ?>">  <br/>
Tel :<input type = "text" class = "form-control" name = "tel_text"  value="<?php echo $tel; ?>"> <br/>
Email :<input type ="text" class = "form-control " name = "email_text" value="<?php echo $email; ?>" > <br/>

<input name= "submit" type="submit" value="Update" class = "btn btn-primary" >

</form>
</body>
</html>

<?php 
}

if (isset($_POST['submit'])){

$name = $_POST['name_text'];
$tel = $_POST['tel_text'];
$email = $_POST['email_text'];

    if ($name== '' ){
        $error = 'ERR: required field';
        }
    if(!is_numeric($telephone)){
        $error2 = 'ERR: numbers only';
        }
    if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
        $error3 = 'ERR: Email not valid';
        }
    else
    {
    ***WILL PROCESS THE SQL QUERY ***
    header("Location: main.php");
    }

    renderForm($name, $tel , $email ,$error, $error2, $error3);
}
else{
renderForm();
}

$con->close();
?>

1 个答案:

答案 0 :(得分:1)

<?php
include("conn/db.php");
function renderForm($name ='',  $tel = '', $email ='', $error='',  $error2='', $error3='')
{
?>
<html >
<head> <title>Form</title></head>
<body>

<?php
if ($error != '') {
echo $error
}
if ($error2 != '') {
echo $error2;
}  
if ($error3 != '') {
echo  $error3;
}
?>

<form action="" method="post">

Name : <input type = "text" class = "form-control" name = "name_text"  value="<?php echo $name; ?>">  <br/>
Tel :<input type = "text" class = "form-control" name = "tel_text"  value="<?php echo $tel; ?>"> <br/>
Email :<input type ="text" class = "form-control " name = "email_text" value="<?php echo $email; ?>" > <br/>

<input name= "submit" type="submit" value="Update" class = "btn btn-primary" >

</form>
</body>
</html>

<?php 
}

if (isset($_POST['submit'])){

$name = $_POST['name_text'];
$tel = $_POST['tel_text'];
$email = $_POST['email_text'];
$is_valid = true;
    if ($name== '' ){
        $error = 'ERR: required field';
        $is_valid = false;
    }
    if(!is_numeric($telephone)){
        $error2 = 'ERR: numbers only';
        $is_valid = false;
        }
    if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
        $error3 = 'ERR: Email not valid';
        $is_valid = false;
        }

    if($is_valid) {
    ***WILL PROCESS THE SQL QUERY ***
    header("Location: main.php");
    }

    renderForm($name, $tel , $email ,$error, $error2, $error3);
}
else{
renderForm();
}

$con->close();
?>

这只是一个小错误:

if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
        $error3 = 'ERR: Email not valid';
} else {
    ***WILL PROCESS THE SQL QUERY ***
    header("Location: main.php");
}

您只检查了电子邮件,如果是核心电子邮件则是程序。它没有包括其他2个名称和号码检查。

我添加了一个小变量来检查所有3个是否正确。