繁体   English   中英

Elseif无法正常工作

[英]Elseif doesn't work properly

我正在尝试使用Ajax进行表单验证。 我的问题是elseif语句无法正常工作

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

    //Create safe values for input into database
    $username = mysqli_real_escape_string($mysqli, $_POST['username']);
    $password = mysqli_real_escape_string($mysqli, $_POST['password']);
    $company = mysqli_real_escape_string($mysqli, $_POST['company']);
    $mail = mysqli_real_escape_string($mysqli, $_POST['mail']);
    $adress = mysqli_real_escape_string($mysqli, $_POST['adress']);

    $errorEmpty = false;
    $errorTaken = false;
    $errorMail = false;

    //Check are required fields empty
    if(empty($username) || empty($password) || empty($company) || empty($mail) || empty($adress)){
        echo "<span class='form-error'>Fill in all fields!</span>";
        $errorEmpty = true;
    }

    //Check is username already taken HERE IS THE PROBLEM!
    elseif(isset($_POST['username'])){

        $username = mysqli_real_escape_string($mysqli, $_POST['username']);

        if(!empty($username)){

            $username_query = mysqli_query($mysqli, "SELECT * FROM users WHERE user_username = '$username'");
            $count=mysqli_num_rows($username_query);

            if($count!=0)
            {
              echo"<span class='form-error'>Username is already taken! </span>";
              $errorTaken = true;
            }
    }

}
    //Check is mail adress correct
    elseif(!filter_var($mail, FILTER_VALIDATE_EMAIL)) {
        echo "<span class='form-error'> Write a valid e-mail adress!</span>";
        $errorMail = true;
    }
    else{
            //Create user
            $add_user_sql = "INSERT INTO users (user_username, user_password, user_company, user_mail, user_adress) 
                            VALUES ('".$username ."', '".$password."', '".$company."', '".$mail."', '".$adress."')";

            $add_user_res = mysqli_query($mysqli, $add_user_sql)
                or die(mysqli_error($mysqli));

            //Close connection to MySQL
            mysqli_close($mysqli);

            echo "<span class='form-success'>Succesifuly registrated!</span>";
        }
}

问题是当我检查数据库中是否已经有用户名时,因为在该步骤之后,每个下一个elseif语句将不会执行。 当我将其放在第一位时,它会停止执行其余的代码,同样的情况是我将其放在最后一处。其他用于检查空字段和邮件验证的条件也可以正常工作。

为您的$ _POST ['username']创建“问题”检查的行。

elseif(isset($_POST['username'])){

如果设置了$ _POST ['username'],则if-else语句不会更深入(这就是它的工作方式)。 我建议这样的事情来解决您的问题:

// check if it was sent through your form
if (isset($_POST['submit']))
{

    //Create safe values for input into database
    $username = mysqli_real_escape_string($mysqli, $_POST['username']);
    $password = mysqli_real_escape_string($mysqli, $_POST['password']);
    $company = mysqli_real_escape_string($mysqli, $_POST['company']);
    $mail = mysqli_real_escape_string($mysqli, $_POST['mail']);
    $adress = mysqli_real_escape_string($mysqli, $_POST['adress']);

    $errorEmpty = false;
    $errorTaken = false;
    $errorMail = false;

    // check if any of the fields are empty
    if(empty($username) || empty($password) || empty($company) || empty($mail) || empty($adress))
    {
        echo "<span class='form-error'>Fill in all fields!</span>";
        $errorEmpty = true;
    }

    //if none of the fields are empty - check if username exists
    $username_query = mysqli_query($mysqli, "SELECT * FROM users WHERE user_username = '$username'");
    $count=mysqli_num_rows($username_query);

    if($count!=0)
    {
        echo"<span class='form-error'>Username is already taken! </span>";
        $errorTaken = true;
    }


    //Check is mail adress correct
    if(!filter_var($mail, FILTER_VALIDATE_EMAIL))
    {
        echo "<span class='form-error'> Write a valid e-mail adress!</span>";
        $errorMail = true;
    }


    // check if any of the errors are set to true
    if(!$errorEmpty AND !$errorMail AND !$errorTaken)
    {
        //Create user
        $add_user_sql = "INSERT INTO users (user_username, user_password, user_company, user_mail, user_adress) 
                         VALUES ('".$username ."', '".$password."', '".$company."', '".$mail."', '".$adress."')";

        $add_user_res = mysqli_query($mysqli, $add_user_sql) or die(mysqli_error($mysqli));

        //Close connection to MySQL
        mysqli_close($mysqli);

        echo "<span class='form-success'>Succesifuly registrated!</span>";
    }
}

尝试从命令行运行脚本,或在脚本顶部添加以下行:

ini_set('display_errors', 1);

这样,您可以看到哪个错误正在停止执行。

通过编写此代码可解决问题,无论如何,感谢大家的帮助

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

    //Create safe values for input into database
    $username = mysqli_real_escape_string($mysqli, $_POST['username']);
    $password = mysqli_real_escape_string($mysqli, $_POST['password']);
    $company = mysqli_real_escape_string($mysqli, $_POST['company']);
    $mail = mysqli_real_escape_string($mysqli, $_POST['mail']);
    $adress = mysqli_real_escape_string($mysqli, $_POST['adress']);

    $errorEmpty = false;
    $errorTaken = false;
    $errorMail = false;

    //Check are required fields empty
    if(empty($username) || empty($password) || empty($company) || empty($mail) || empty($adress)){
        echo "<span class='form-error'>Fill in all fields!</span>";
        $errorEmpty = true;
    }
    //Check is mail adress correct
    elseif(!filter_var($mail, FILTER_VALIDATE_EMAIL)) {
        echo "<span class='form-error'> Write a valid e-mail adress!</span>";
        $errorMail = true;
    }

    //Check is username already taken
    if(isset($_POST['username'])){

        $username = mysqli_real_escape_string($mysqli, $_POST['username']);

        if(!empty($username)){

            $username_query = mysqli_query($mysqli, "SELECT * FROM users WHERE user_username = '$username'");
            $count=mysqli_num_rows($username_query);

            if($count!=0)
            {
              echo"<span class='form-error'>Username is already taken! </span>";
              $errorTaken = true;
            }
    }

}

    if($errorEmpty == false && $errorMail == false && $errorTaken == false){

            //Create user
            $add_user_sql = "INSERT INTO users (user_username, user_password, user_company, user_mail, user_adress) 
                            VALUES ('".$username ."', '".$password."', '".$company."', '".$mail."', '".$adress."')";

            $add_user_res = mysqli_query($mysqli, $add_user_sql)
                or die(mysqli_error($mysqli));

            //Close connection to MySQL
            mysqli_close($mysqli);

            echo "<span class='form-success'>Succesifuly registrated!</span>";
        }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM