我正在为我建立的网站制作一个自定义的内容管理系统,到目前为止,一切看起来都很好,直到这个障碍。我让我的代码工作到您可以从登录.php页面输入用户名和密码的位置,它成功地将我重定向到索引.php页面,但后来我决定我需要重定向任何未登录的人登录.php然后再查看我的 CMS 上的其他页面。
所以这个代码就在这里...
<?php require_once("lib/sessions.php");
require_once("lib/functions.php");
require_once("meta.php");
login_confirm();
?>
它位于我的CMS中每个页面的顶部,login_confirm功能如下所示...
function login_confirm() {
if(!logged_in()) {
redirect_to("login.php");
}
}
function logged_in() {
return isset($_SESSION['admin_id']);
}
$_SESSION['admin_id'] 在我的登录页面上设置如下...
$found_admin = attempt_login($username, $password);
if($found_admin) {
//Success, mark user as logged in
$_SESSION["admin_id"] = $found_admin["id"];
$_SESSION["username"] = $found_admin["username"];
redirect_to("index.php");
} else {
//failed
$_SESSION["message"] = "Log in failed";
}
就像我在开头说的,登录页面将成功将您重定向到索引.php没问题,但那是在我将login_confirm()放在页面顶部之前。现在,无论什么,我总是被重定向到登录.php即使我输入了正确的凭据。我假设会话没有保存或其他什么...
编辑:会话.php看起来像这样。因此,会话将在页面顶部启动。
<?php
session_start();
ob_start();
//function for message and errors
?>
我没有看到您正在使用 session_start();在使用 $_SESSION 之前,必须对其进行初始化。