我在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();
}
}
}
}
答案 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"] ?>
这将告诉你确定你应该在哪里。