重定向停止工作

时间:2013-05-01 05:12:39

标签: php

我在php中创建了一个基本的登录脚本。在我的lampp localhost上重定向工作正常。当我将模板加载到另一台服务器时,重定向不再工作。任何人都可以告诉我为什么这是以及如何解决它,将不胜感激。感谢

以下是admin.php的脚本,其中包含登录表单。如果设置了$_SESSION['logged_in'],则应每次将用户重定向到backend.php页面。但是在服务器上它每次都会显示admin.php页面。但是,当我在我的灯泡本地主机上时,它工作正常。

$users = new Users;

if (isset($_SESSION['logged_in']) === true) {
    header('Location: backend.php');
} else {
    if (empty($_POST) === false) {
        $username = $_POST['username'];
        $password = $_POST['password'];

        if (empty($username) === true || empty($password) === true) {
            $errors[] = 'All fields are required!';
        } else {
            $login = $users->login($username, $password);

            if ($login == 0) {
                $errors[] = 'Username or password incorrect!';
            } else {
                $_SESSION['logged_in'] = true;
                header('Location: backend.php');
                exit();
            }
        }
    }
}

3 个答案:

答案 0 :(得分:1)

我假设文件的其余部分包含管理页面的实际HTML?

您是否确认if正在进入您期望的分支机构。通过使用调试器或更原始的东西,如die('This should redirect!');

如果有,那么问题很可能是您在header电话之前发生了输出。确保显示所有错误。它应该给你一个错误,告诉问题在哪里。

正因为如此,在标题重定向调用之后exit()是常见的 - 以防止无意中运行/显示页面的其余部分。

答案 1 :(得分:0)

使用<?php session_start(); ?>代码的开头。

答案 2 :(得分:0)

您的服务器可能具有与您的本地不同的根文件夹。我会试试

<?php echo $_SERVER["DOCUMENT_ROOT"]; ?>

以及

<?php echo $_SERVER["SCRIPT_FILENAME"] ?>

这将告诉你确定你应该在哪里。