Php 为什么此语句在if语句之前运行?

Php 为什么此语句在if语句之前运行?,php,mysqli,Php,Mysqli,这是我的代码: if(isset($_POST['name']) && isset($_POST['email']) && isset($_POST['username']) && isset($_POST['pass']) && isset($_POST['repeat-pass'])){ $fullname = mysqli_real_escape_string($con, $_POST['name']); $emai

这是我的代码:

if(isset($_POST['name']) && isset($_POST['email']) && isset($_POST['username']) && isset($_POST['pass']) && isset($_POST['repeat-pass'])){

  $fullname = mysqli_real_escape_string($con, $_POST['name']);
  $email = mysqli_real_escape_string($con, $_POST['email']);
    $username = mysqli_real_escape_string($con, $_POST['username']);
  $password_post = $_POST['pass'];
  $confirmpassword_post = $_POST['repeat-pass'];
    $password = mysqli_real_escape_string($con, hash('sha3-512' , "$password_post"));
    $confirmpassword = mysqli_real_escape_string($con, hash('sha3-512' , "$confirmpassword_post"));

    if($password != $confirmpassword){
        header("Location: index.php?failed=2");
    }

    $result = mysqli_query($con, "SELECT * FROM `users` WHERE `username` = '$username'") or die(mysqli_error($con));
    if(mysqli_num_rows($result) > 0){
    header("Location: index.php?failed=1");
    }

    $result = mysqli_query($con, "SELECT * FROM `users` WHERE `email` = '$email'") or die(mysqli_error($con));
    if(mysqli_num_rows($result) > 0){
         header("Location: index.php?failed=3");
    }

    $ip = mysqli_real_escape_string($con, $_SERVER['REMOTE_ADDR']);
    $date = date('Y-m-d');

   mysqli_query($con, "INSERT INTO `users` (`full_name`, `email`, `username`, `password`, `date`, `ip`) VALUES ('$fullname', '$email', '$username', '$password', '$date', '$ip')") or die(mysqli_error($con));
    header("Location: index.php?success=1"); 
}
我的问题是,当两个密码不相等时,fi语句应该将用户发送到index.php?failed=2。 它不起作用,它将首先运行mysqli_查询(Insert),并将用户重定向到index.php?success=1。
但是为什么当if语句位于另一个语句之前时,它会在成功重定向之后运行呢?

仅仅发送位置头是行不通的,因为PHP将继续执行脚本


您需要添加一个
die()头调用后,都要执行code>,以确保PHP停止对其余代码的求值。

只发送位置头是不起作用的,因为PHP将继续执行脚本


您需要添加一个
die()
在每次
头调用之后
以确保PHP停止评估其余代码。

您应该
退出就在
标题之后
位置:它不会自行停止,它不应该停止。所以代码计算到最后。你应该
退出就在
标题之后
位置:它不会自行停止,它不应该停止。所以代码计算到最后。哦,哇,我知道我又学到了一些东西。非常感谢你哇,我知道我又学到了一些东西。多谢各位