Php 用户登录脚本使用mysqli prepared语句运行正常,但不会重定向

Php 用户登录脚本使用mysqli prepared语句运行正常,但不会重定向,php,mysqli,Php,Mysqli,这是我使用预先准备好的语句的用户登录表单。 当我尝试运行表单时,它只是重新加载并显示自己。 我猜这是一个逻辑错误,但我似乎无法找出我做错了什么。请提供帮助?永远不要存储纯文本密码!请使用PHP来处理密码安全性。如果您使用的PHP版本低于5.5,则可以使用密码\u散列。在散列之前,不需要对它们执行任何操作或使用任何其他清理机制。这样做会更改密码并导致不必要的额外编码;重定向后。错误日志中是否有错误?为什么要重新分配用户名和密码两次?是否检查了$rowCount? if (isset($_POST[

这是我使用预先准备好的语句的用户登录表单。 当我尝试运行表单时,它只是重新加载并显示自己。
我猜这是一个逻辑错误,但我似乎无法找出我做错了什么。请提供帮助?

永远不要存储纯文本密码!请使用PHP来处理密码安全性。如果您使用的PHP版本低于5.5,则可以使用密码\u散列。在散列之前,不需要对它们执行任何操作或使用任何其他清理机制。这样做会更改密码并导致不必要的额外编码;重定向后。错误日志中是否有错误?为什么要重新分配用户名和密码两次?是否检查了$rowCount?
if (isset($_POST['submit'])) {
      # code...
      $umail = $_POST['userMail'];
      $upassword = $_POST['userPassword'];

      $query = "SELECT * FROM users WHERE EMAIL = ? AND PASSWORD = ? ";
      //prepare the statement
      $stmt = $db->prepare($query);

      //bind the parameters
      $stmt->bind_param("ss",$userMail, $userPassword);

      $userMail = $umail;
      $userPassword = $upassword;


      //execute the query
      $stmt->execute();

      //get the query result
      $result = $stmt->get_result();

      $rowCount = $result->num_rows;

      if ($rowCount > 0) {
        # code...

        $_SESSION['id'] = $row['id'];
        $_SESSION['email'] = $row['email'];

        header("Location: successful.php");
      }else{
        $errorMsg = '<div class="alert alert-danger" role="alert">
              <strong>Unsuccessful Login.</strong>Please check your credentials and try again.
            </div>';
      }
      $stmt->close();

      $db->close();
    }