php登录未在服务器上重定向

时间:2020-11-06 13:59:23

标签: php authentication redirect

我在PHP中遇到一个问题。我有登录页面。当我在写电子邮件和密码并单击登录后尝试登录localhost时,将我重定向到仪表板。但是,当我将页面上传到托管站点并尝试在线进行访问时,它最初并不会重定向我,我必须刷新或登录一次以上的时间来重定向我。我该如何解决?谢谢。 这是我的PHP代码:

<?php
session_start();


if (isset($_SESSION['user_name']) && !empty($_SESSION['user_name'])){
    header('Location: dashboard/index.php');
}

?>

 <?php



            if (isset($_POST['login'])){
                $user_email = $_POST['user_email'];
                $user_password = $_POST['user_password'];



                try{
                    include 'dashboard/includes/db.php';


                    $query = "SELECT * FROM users WHERE user_email = :user_email AND user_password = AES_ENCRYPT(:password, :key)";


                    $send_info = $connection->prepare($query);

                    $send_info->bindParam(':user_email', $user_email);
                    $send_info->bindParam(':password', $user_password);
                    $send_info->bindParam(':key', $key);

                    $send_info->execute();


                    $send_info->setFetchMode(PDO::FETCH_OBJ);
                    $result = $send_info->fetchAll();

                    if(count($result) == 0){
                        $message = "<h6 class='text-danger mt-2'>Chybný email alebo heslo</h6>";
                    }
                    else{
                    
                        foreach ($result as $item){
                            $_SESSION['user_id'] = $item->user_id;
                            $_SESSION['user_email'] = $item->user_email;
                            $_SESSION['user_name'] = $item->user_name;
                            $_SESSION['user_lastname'] = $item->user_lastname;
                            $_SESSION['user_role'] = $item->user_role;
                            $_SESSION['user_function'] = $item->user_function;
                            $_SESSION['user_image'] = $item->user_image;

                            header('Location: dashboard/index.php');
                            exit;
                        }
                    
                    }

                }
                catch (Exception $e){
                    echo $e;
                }

            }
            ?>

1 个答案:

答案 0 :(得分:1)

我不喜欢?>(空白)<?php部分。在header()调用之前输出任何内容都会产生意想不到的后果。另外,您还会错过第一个标头之后的exit()。