无法执行PHP的表单验证

无法执行PHP的表单验证,php,validation,Php,Validation,你好,伙计,请协助,我有验证问题。因此,基本上,如果我没有验证任何表单,表单就会完美地执行,那么一旦我验证了表单,表单就会返回表单和它的值 **这是我的密码** $error[] = ""; if (isset($_POST['submit'])) { $firstname = trim($_POST['firstname']); $lastname = trim($_POST['lastname'

你好,伙计,请协助,我有验证问题。因此,基本上,如果我没有验证任何表单,表单就会完美地执行,那么一旦我验证了表单,表单就会返回表单和它的值

**这是我的密码**

             $error[] = "";
         if (isset($_POST['submit'])) {

             $firstname = trim($_POST['firstname']);
             $lastname = trim($_POST['lastname']);
             $user_name = trim($_POST['user_name']);
             $user_type = trim($_POST['user_type']);
             $email = trim($_POST['email']);
             $created_at = trim($_POST['created_at']);
             $password = trim($_POST['password']);
             $confirm_password = trim($_POST['confirm_password']);

             // validate form field
             if (empty($firstname)) {
                 $error[] = 'Field empty, please enter your first name';
             } else {
                 if (strlen($firstname) < 3) {
                     $error[] = 'First Name is too short';
                 }
             }
             // check if name only contains letters and whitespace
             if (!preg_match("/^[a-zA-Z ]*$/", $firstname)) {
                 $error[] = "Only letters and white space allowed";
             }
             if (empty($lastname)) {
                 $error[] = 'Field empty, please enter your last name';
             } else {
                 if (strlen($lastname) < 3) {
                     $error[] = 'Last Name is too short';
                 }
             }
             // check if name only contains letters and whitespace
             if (!preg_match("/^[a-zA-Z ]*$/", $lastname)) {
                 $error[] = "Only letters and white space allowed";
             }
             if (empty($user_name)) {
                 $error[] = 'Field empty, please enter your username';
             } else {
                 if (strlen($user_name) < 3) {
                     $error[] = 'UserName is too short';
                 }
             }
             // set email filter validation 
             if (empty($email)) {
                 $error[] = 'Field empty, please enter your email address';
             } else {
                 //email validation
                 if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
                     $error[] = 'Please enter a valid email address';
                 }
             }
             if (empty($password)) {
                 $error[] = 'Field empty, please create a password';
             } else {
                 if (strlen($password) < 6) {
                     $error[] = 'Password is too short';
                 }
                 if (strlen($password) > 15) {
                     $error[] = 'Password is too long';
                 }
                 if (!preg_match("#[A-Z]+#", $password)) {
                     $error[] = "Password must include at least one CAPS! ";
                 } else {
                     if (!preg_match("#[0-9]+#", $password)) {
                         $error[] = "Password must include at least one NUMBER! ";
                     }
                 }
             }
             // set field validation for confirm password
             if (empty($confirm_password)) {
                 $error[] = 'Field empty, please confirm your password';
             } else {
                 if ($password != $confirm_password) {
                     $error[] = 'Error... Passwords do not match';
                 }
             }

             //if no errors have been created carry on
             if (!isset($error)) {

                 $password_hash = password_hash($password, PASSWORD_DEFAULT);
                 $created_at = date('Y-m-d');
                 if (!($stmt = $con - > prepare("INSERT INTO user (firstname, lastname, user_name, user_type, email, password, created_at) 
                             VALUES( ? , ? , ? , ? , ? , ? , ? )
                             "))) {
                             echo "Prepare failed: (".$con - > errno.
                             ")".$con - > error;
                         }
                         if (!$stmt - > bind_param('sssssss', $firstname, $lastname, $user_name, $user_type, $email, $password_hash, $created_at)) {
                             echo "Binding paramaters failed:(".$stmt - > errno.
                             ")".$stmt - > error;
                         }
                         if (!$stmt - > execute()) {
                             echo "Execute failed: (".$stmt - > errno.
                             ")".$stmt - > error;
                         }
                         $stmt - > close();
                         if ($stmt) {
                             $_SESSION['main_notice'] = "Successfully registered, login here!";
                             header('Location: index.php');
                             exit;
                         } else {
                             $_SESSION['main_notice'] = "Some error, try again";
                             header('Location: '.$_SERVER['PHP_SELF']);
                         }
                     }
                 }
$error[]=”;
如果(isset($_POST['submit'])){
$firstname=trim($_POST['firstname']);
$lastname=trim($_POST['lastname']);
$user\u name=trim($\u POST['user\u name']);
$user\u type=trim($\u POST['user\u type']);
$email=trim($_POST['email']);
$created_at=trim($u POST['created_at']);
$password=trim($_POST['password']);
$confirm_password=trim($_POST['confirm_password']);
//验证表单字段
if(空($firstname)){
$error[]=“字段为空,请输入您的名字”;
}否则{
如果(strlen($firstname)<3){
$error[]=“名字太短”;
}
}
//检查名称是否仅包含字母和空格
如果(!preg_match(“/^[a-zA-Z]*$/”,$firstname)){
$error[]=“仅允许字母和空白”;
}
if(空($lastname)){
$error[]=“字段为空,请输入您的姓氏”;
}否则{
if(strlen($lastname)<3){
$error[]=“姓氏太短”;
}
}
//检查名称是否仅包含字母和空格
如果(!preg_match(“/^[a-zA-Z]*$/”,$lastname)){
$error[]=“仅允许字母和空白”;
}
if(空($user_name)){
$error[]=“字段为空,请输入您的用户名”;
}否则{
if(strlen($user_name)<3){
$error[]=“用户名太短”;
}
}
//设置电子邮件筛选器验证
如果(空($email)){
$error[]=“字段为空,请输入您的电子邮件地址”;
}否则{
//电子邮件验证
如果(!filter_var($_POST['email'],filter_VALIDATE_email)){
$error[]=“请输入有效的电子邮件地址”;
}
}
if(空($password)){
$error[]=“字段为空,请创建密码”;
}否则{
if(strlen($password)<6){
$error[]=“密码太短”;
}
如果(strlen($password)>15){
$error[]=“密码太长”;
}
如果(!preg_match(#[A-Z]+#“,$password)){
$error[]=“密码必须至少包含一个大写字母!”;
}否则{
如果(!preg_match(#[0-9]+#“,$password)){
$error[]=“密码必须至少包含一个数字!”;
}
}
}
//为确认密码设置字段验证
if(空($confirm_password)){
$error[]=“字段为空,请确认您的密码”;
}否则{
如果($password!=$confirm\u password){
$error[]=“错误…密码不匹配”;
}
}
//如果未创建错误,请继续
如果(!isset($error)){
$password\u hash=password\u hash($password,password\u DEFAULT);
$created_at=日期('Y-m-d');
if(!($stmt=$con->prepare(“插入到用户中(名字、姓氏、用户名、用户类型、电子邮件、密码、创建时间))
值(?,,,,,,,,,,?)
"))) {
echo“准备失败:(“$con->errno。
“$con->错误;
}
if(!$stmt->bind_param('sss'、$firstname、$lastname、$user_name、$user_type、$email、$password_hash、$created_at)){
echo“绑定参数失败:(“$stmt->errno。
“$stmt->错误;
}
如果(!$stmt->execute()){
echo“执行失败:(“$stmt->errno。
“$stmt->错误;
}
$stmt->close();
如果($stmt){
$\会话['main\u notice']=“已成功注册,请登录此处!”;
标题('Location:index.php');
出口
}否则{
$\u会话['main\u notice']=“出现一些错误,请重试”;
标题('Location:'.$_SERVER['PHP_SELF']);
}
}
}

我不知道,如果你能看到我看不到的东西,我就不知道了。提前谢谢。

我建议稍微改变一下布局

当检测到表单已过账时,首先执行检查。如果在输出任何内容之前执行此操作,您仍然可以发送标题并执行其他有用的操作

$sError     = ""; 
$sFirstName = '';

// check if post has been made
if(isset($_POST['submit'])){

    //check for content and a non empty string
    if(isset($_POST['FirstName']) && $_POST['FirstName'] != ''){

        // perform any other validation tasks here
        if(strlen($_POST['FirstName'] > 3){

            $sFirstName = $_POST['FirstName'];
        }else{
             $sError .= "[FirstNameLength]";
        }

    }

    // if firstname hasnt been set we can add to error string
    if($sFirstName == '')
       $sError .= "[FirstName]";


    // if nothing in sError go ahead with the action 
    if($sError = ""){

    }
然后,在包含标题等之后,可以检查sError var并输出任何错误消息

if($sError !== ""){
    if( 
        strpos($sError, '[FirstName]') !== false ||
        strpos($sError, '[LastName]') !== false
    ){
        echo"<div class=\"statusMessage alert alert-danger\" role=\"alert\"><ul>";

        if(strpos($sError, '[FirstName]') !== false){
            echo "<li>You must enter a first name</li>";
        }
        if(strpos($sError, '[FirstNameLength]') !== false){
            // just an example of another check, firstname could be 1 char!
            echo "<li>Your first name is too short, please enter full name</li>";
        }

        echo "</ul></div>";
    }
}




// success messages
if(isset($_GET['successMessage'])){
    if($_GET['successMessage'] === "info-updated"){
        echo"<div>Info Updated.</div>";
    }
}
if($sError!==“”){
如果(
strpos($sError,“[FirstName]”)!==false||
strpos($sError,“[LastName]”)!==false
){
回声“
    ”; if(strpos($sError,“[FirstName]”)!==false){ echo“
  • 您必须输入一个名字”
  • ; } if(strpos($sError,“[FirstNameLength]”)!==false){ //只是一个考试
    $error[] = "";
    
    $error = [];
    
    //if no errors have been created carry on
    if(empty($error)) {