首页 > 解决方案 > 为什么我的登录页面在我点击登录按钮后转到 /login.php?login=error ?

问题描述

点击登录按钮后,我的登录页面将进入错误页面,我的所有信息(例如用户名和密码)都是正确的。

} else {
        $sql = "SELECT * FROM users WHERE user_uid='uid'";
        $result = mysqli_query($conn, $sql);
        $resultCheck = msqli_num_rows($result);
        if($resultCheck < 1){
            header("Location: ../login.php?login=error");
            exit();
            } else {
                if($row = mysqli_fetch_assoc($result)){
                    //Dehash pass
                    $hashedPwdCheck = password_verify($pwd, 
                    $row['user_pwd']);
                    if($hashedPwdCheck == false){
                        header("Location: ../login.php?login=error");
                        exit();
                    } elseif ($hashedPwdCheck == true){
                        //Log in
                        $_SESSION[u_id] = $row['user_id'];
                        $_SESSION[u_first] = $row['user_first'];
                        $_SESSION[u_last] = $row['user_last'];
                        $_SESSION[u_email] = $row['user_email'];
                        $_SESSION[u_uid] = $row['user_uid'];
                        header("Location: ../home.php?login=success");
                        exit();
                    }
                }
            }
        }
} else {
    header("Location: ../login.php?login=error");
    exit();
}

标签: phpmysqlsessionpasswords

解决方案


我认为问题可能是 double else。从您的评论中提取,我猜您的代码如下所示:

if (empty($uid)|| empty($pwd) {
    \\ redirect
} else {
    \\ login logic
} else {
    \\ redirect
}

因此,您拥有的是重定向或重定向。您可能想要做的是丢失最后一个 else 所以您的代码只是:

if (empty($uid)|| empty($pwd) {
    \\ redirect
} else {
    \\ login logic
}

正如其他人指出的那样,您的代码中还有很多其他错误,但这至少可以让您摆脱重定向问题。


推荐阅读