[英]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.