Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP表单数据验证不起作用_Php - Fatal编程技术网

PHP表单数据验证不起作用

PHP表单数据验证不起作用,php,Php,嗨,我正在尝试在写入数据库之前做一个带有数据验证的表单。但我不确定为什么数据验证不起作用。下面是我的代码 文件名:bookoffer.php $NameErr = $EmailErr = $DescriptionErr = ""; //$Name = $Email = $Description; if (isset($_POST['Submit'])) { $errors = array(); if

嗨,我正在尝试在写入数据库之前做一个带有数据验证的表单。但我不确定为什么数据验证不起作用。下面是我的代码

文件名:bookoffer.php
$NameErr = $EmailErr = $DescriptionErr = ""; 
//$Name = $Email = $Description;

        if (isset($_POST['Submit']))
            {        
       $errors = array();
            if (empty($_POST['Name']))
                {
                $NameErr = "**Name is required**";
                }
                else
                    {
                        $Name = ($_POST['Name']);
                        //check if name only contain letter and white space
                        if (!preg_match("/^[a-zA-Z ]*$/",$Name))
                            {
                            $NameErr = "**Only letters and white space allowed**";
                            }
                    }



        if (empty($_POST['Email']))
        {
            $EmailErr = "**Email is required**";
        }
        else
            {
                $Email = ($_POST['Email']);;
                //check if e-mail address is well-formed
                if (!filter_var($Email, FILTER_VALIDATE_EMAIL))
                    {
                    $EmailErr = "**Invalid email format**";
                    }
            }


        if (empty($_POST['Description']))
        {
            $Description = "**Description is required**";
        }
        else
            {
            $Description = ($_POST['Description']);
            }

     }  
    //if(count($errors)==0)

        include 'database_connect.php';  //make database connection

        $Name = $_POST['Name'];
        $Email = $_POST['Email'];
        $Description = $_POST['Description'];      

        $sql = "INSERT INTO books_offer (Name, Email, Description) values ('$Name', '$Email', '$Description')";
        $redirect = true;
        header('Location: Thank_you.php');        
        mysqli_query($conn, $sql) or die (mysqli_error($conn));
        mysqli_close($conn);

?>
下面是调用bookoffer.php的html文件

$NameErr = $EmailErr = $DescriptionErr = ""; 
//$Name = $Email = $Description;

        if (isset($_POST['Submit']))
            {        
       $errors = array();
            if (empty($_POST['Name']))
                {
                $NameErr = "**Name is required**";
                }
                else
                    {
                        $Name = ($_POST['Name']);
                        //check if name only contain letter and white space
                        if (!preg_match("/^[a-zA-Z ]*$/",$Name))
                            {
                            $NameErr = "**Only letters and white space allowed**";
                            }
                    }



        if (empty($_POST['Email']))
        {
            $EmailErr = "**Email is required**";
        }
        else
            {
                $Email = ($_POST['Email']);;
                //check if e-mail address is well-formed
                if (!filter_var($Email, FILTER_VALIDATE_EMAIL))
                    {
                    $EmailErr = "**Invalid email format**";
                    }
            }


        if (empty($_POST['Description']))
        {
            $Description = "**Description is required**";
        }
        else
            {
            $Description = ($_POST['Description']);
            }

     }  
    //if(count($errors)==0)

        include 'database_connect.php';  //make database connection

        $Name = $_POST['Name'];
        $Email = $_POST['Email'];
        $Description = $_POST['Description'];      

        $sql = "INSERT INTO books_offer (Name, Email, Description) values ('$Name', '$Email', '$Description')";
        $redirect = true;
        header('Location: Thank_you.php');        
        mysqli_query($conn, $sql) or die (mysqli_error($conn));
        mysqli_close($conn);

?>
<!DOCTYPE HTML>  
<html>
<head>
<style>
.error {color: #FF0000;}
</style>
</head>

    <body>

        <h2>Please Offer Your Book</h2>
        <form id="bookoffer" method="post" action="bookoffer.php" > 
        <p><span class="error"> <font color="red">*required field.</font></span></p>

            Name<font color="red">*</font> <input type="text" name="Name" >
            <span class="error"> <?php echo $NameErr;?></span>
            <br></br>

            Email<font color="red">*</font> <input type="text" name="Email" >
            <span class="error"> <?php echo $EmailErr;?></span>
            <br></br>

            Description<font color="red">*</font><textarea name ="Description" rows="5" cols="40" ></textarea>
            <span class="error"> <?php echo $DescriptionErr;?></span>
            <br></br>
                <input type="submit" name="submit_form" value="Submit" /> 
        </form>
    </body>
</html>

.错误{color:#FF0000;}
请把你的书给我
*必填字段

姓名*

电子邮件*

描述*


您没有填充
$errors
数组,因此您注释掉的if语句将始终为
true
。您正在将错误存储在各个变量中。一个选择是改变

$errors = array();

然后,在设置错误变量时,为每个变量添加一行,以将
$errors
设置为
true
,例如

if (empty($_POST['Name']))
{
   $NameErr = "**Name is required**";
   $errors = true; // this line added
}
现在可以将注释掉的if语句更新为

if ($errors) {

下面不是你的代码这是HTML表单?您需要编辑问题以包含它。我们不知道这是否有错。如果你留下了问题,那么没有人能够提供帮助,除非他们完全重写并真诚地怀疑他们会等到你回来和/或更新你的问题嗯。。什么???@Duane Lortie将多个变量设置为空字符串。为什么变量名是pascal大小写?我认为变量名应该是驼峰大小写或下划线大小写,它提供了更好的可读性。