PHP登录页面不会重定向到下一页

时间:2017-07-28 18:34:36

标签: php mysql

我正在为我的第一个php项目编写一个登录/注册系统,我在login.php中遇到了问题。这是我的login.php:

<?php
   include("db.php");
   session_start();
   if(isset($_SESSION['login_user'])){
      header("Location: welcome.php");
   }

   $error = '';
   if (isset($_POST['submit'])) {
      if (empty($_POST['username']) or empty($_POST['password'])) {
           $error = "Please enter your login details";
     } else {

        $username = mysqli_real_escape_string($conn, $_POST['username']);
        $password = md5($_POST['password']);



        $query = mysqli_prepare($conn, "SELECT password FROM workers WHERE user_name=?");
        mysqli_stmt_bind_param($query,"s",$username);
        mysqli_stmt_execute($query);
        mysqli_stmt_bind_result($query,$pass);
        if(mysqli_stmt_fetch($query)){
            if ($password == $pass){
                header('Location:welcome.php');
                $_SESSION['login_user'] = $username;

            }else {
                $error = "You typed the wrong password";
                unset($username, $password);
            }
        }else{
            $error = "User Login doesn't exists";
            unset($username,$password);
        }

    }
}
?>

问题是在输入现有的用户名/密码后,它只刷新页面而不是前往welcome.php。我检查了一个不正确的用户名/密码,它显示了预期的错误,所以我不认为问题是在MySQL查询中。如何找到代码问题并解释原因?

2 个答案:

答案 0 :(得分:1)

发送标头后不应执行任何代码。

$_SESSION['login_user'] = $username;
header('Location:welcome.php');
exit();
好吧,并考虑好人们花时间发帖的那些评论;)

答案 1 :(得分:0)

I will suggest code like this

<?php
   include("db.php");
   session_start();
   $error = '';
   if(!isset($_SESSION['login_user'])){
      if (isset($_POST['submit'])) {
      if (empty($_POST['username']) or empty($_POST['password'])) {
           $error = "Please enter your login details";
     } else {

        $username = mysqli_real_escape_string($conn, $_POST['username']);
        $password = md5($_POST['password']);



        $query = mysqli_prepare($conn, "SELECT password FROM workers WHERE user_name=?");
        mysqli_stmt_bind_param($query,"s",$username);
        mysqli_stmt_execute($query);
        mysqli_stmt_bind_result($query,$pass);
        if(mysqli_stmt_fetch($query)){
            if ($password == $pass){
                header('Location:welcome.php');
                $_SESSION['login_user'] = $username;

            }else {
                $error = "You typed the wrong password";
                unset($username, $password);
            }
        }else{
            $error = "User Login doesn't exists";
            unset($username,$password);
        }

    }
}
   }else
   {
       header("Location: welcome.php");
   }
?>

In your heade function is used in top and when it check it always gives header location error.
Remove this by taking whole your code in !isset.