以下标题功能无效。如果用户没有登录,我会尝试登录 -
<?PHP
if (logged_in() === false) {
header('Location: login.php');
}
?>
但如果我这样做 -
<?PHP
if (logged_in() === false) {
echo"No user is logged in";
}
?>
它回应它,我可以看到它说没有用户登录
基本上只是检查是否有用户登录
function logged_in() {
return (isset($_SESSION['user_id'])) ? true : false;
}
答案 0 :(得分:2)
尝试将退出()或死()置于标题之后
if (logged_in() === false) {
header('Location: login.php');
exit(); //or die();
}
但是要确保你的login.php应该在同一个文件夹中
答案 1 :(得分:1)
确保代码中没有输出(也是空格)。
您可以使用ob_start()和ob_end_flush()来清除输出。
<?php ob_start();
// code
ob_end_flush(); ?>
答案 2 :(得分:0)
您可能需要包含新网址的完全限定域和路径。 header function的官方文档中有一条注释,表明了这一点。
注意:
HTTP / 1.1需要绝对URI作为»Location:includes的参数 方案,主机名和绝对路径,但有些客户接受 相对URI。你通常可以使用$ _SERVER ['HTTP_HOST'], $ _SERVER ['PHP_SELF']和dirname()从a创建一个绝对URI 相对一个人:
本说明还包含以下代码示例。
<?php
/* Redirect to a different page in the current directory that was requested */
$host = $_SERVER['HTTP_HOST'];
$uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$extra = 'login.php';
header("Location: http://$host$uri/$extra");
exit;
?>