【问题标题】:Admin Panel System管理面板系统
【发布时间】:2024-04-26 17:35:02
【问题描述】:

* 的帮助,但这次我没有发现任何关于它的信息。 我正在制作一个系统,比如 wordpress: /行政/ /内容/ /index.php

因此,作为 WP,“内容”内部将包含“主题”,但我的问题与此无关。管理员,当然,用户必须登录。如何将 /admin/* 中的所有内容重定向到我的 /admin/login.php ? 我找到了一个可以使用的代码,比如:

php代码:

if (!empty($_SESSION['logged_in']))
echo something;
else
redirect something;

但是,我不想在每一页都做,我想在 header.php 中,一开始就做:

if (!empty($_SESSION['logged_in']))
header ('Location: webpage');

HTML代码在这里。

但是,我不想加载该 html 代码,我想先重定向,然后再显示 HTML。有可能吗?

【问题讨论】:

    标签: php login system admin


    【解决方案1】:

    尝试类似:

    if (!empty($_SESSION['logged_in'])) {
    header ('Location: /admin/login.php');
    exit;
    }
    else
    {
    // HTML
    }
    

    确保在向浏览器发送任何其他头部信息之前调用 header()。

    【讨论】:

    • 这和我说的一样,我不想在每一页都输入:“if empty session... else ...”。我想我会创建一个functions.php和一个函数is_logged,它将验证,如果没有,“header(Location: login.php); exit;”。那会奏效的。
    【解决方案2】:

    如果您是管理员,如果您想至少检测到您的帐户,那么请考虑您已检索到该帐户的 sql 数据并将其存储到会话中。

    让我考虑$_SESSION['user_id']$_SESSION['user_prev'],user_id是你sql的账户主键,user_prev是权限,我说

    Member = 1
    Developer = 50
    Admin = 99
    

    这些是您的权限编号,当然它们必须存储在您的数据库中并检索数据...

    我们需要假设某个“访客”确实登录了......我们不知道它是会员/开发者还是管理员。

    if(isset($_SESSION['user_id']))
    {
         if(isset($_SESSION['user_prev'])) {
                /*We need to check if it is Admin or else it might be
                 *a Developer or just a Member
                 */
                if($_SESSION['user_prev'] == 99) {
                    include_once 'admin_content.php';
                }elseif($_SESSION['user_prev'] == 50) {
                    include_once 'developer_content.php';
                }else{
                    include_once 'member_content.php';
                }
         }
    }else {
        header("Location: login.php");
    }
    

    我使用“include_once”而不是将用户重定向到某个内容/php...这也将帮助您保护您的内容...

    【讨论】: