discuzX3.2 admin.php

$discuz = C::app();
$discuz->init();
这是创建discuz内核的方式,通过静态方法并调用init方法,
C是继承自core的类,执行C::app();将调用
core类的app方法,此处调用后执行的是返回core静态
变量的过程,在core中定义的返回代表应用的静态的
类变量$_app,这个对象会管理config,管理程序中使用的对象实例。
是程序的启动器的角色。


require './source/class/class_core.php';
执行后,C::creatapp();会执行,即调用 core中的
createapp方法,这里使用的是单例模式生成全局对象,
在discuz_application类中的instance方法将创建
全局对象,
在discuz_application类中的方法定义为,
static function &instance() {
static $object;
if(empty($object)) {
$object = new self();
}
return $object;
}




这是只会调用一次的方法,返回的是代表整个应用的全局
对象,


在生成后将调用init方法初始化系统要使用的环境,
这里是初始化数据库,初始化系统基本配置,登录用户,
session会话变量,移动应用,




$admincp = new discuz_admincp();
$admincp->core  = & $discuz;
$admincp->init();


这将调用discuz_admincp类,并且指定core,
进行初始化,调用init方法,
discuz_admincp类的路径
source/class/discuz/discuz_admincp.php
在构造函数中没有初始化操作,
调用init后进行管理后台需要的操作的初始化,
check_cpaccess进行权限验证,验证结果是
重定向到后台登录页面。
通过
require $this->admincpfile('login');
加载登录的控制器页面。admincpfile函数的
定义为
function admincpfile($action) {
return './source/admincp/admincp_'.$action.'.php';
}


这里是加载source/admincp/admincp_login.php文件。
admincp_login.php中生成的是管理中心的登录界面,
在登录界面中使用
<form method="post" autocomplete="off" name="login" id="loginform" action="admin.php?">




在登录界面键入管理员用户名和密码后,提交的页面
是admin.php文件。在admin.php中包含有
接收变量的语句:




$action = preg_replace('/[^\[A-Za-z0-9_\]]/', '', getgpc('action'));
$operation = preg_replace('/[^\[A-Za-z0-9_\]]/', '', getgpc('operation'));
$do = preg_replace('/[^\[A-Za-z0-9_\]]/', '', getgpc('do'));
$frames = preg_replace('/[^\[A-Za-z0-9_\]]/', '', getgpc('frames'));






这是admin.php中获得Query_string中
参数的方法,一般此时要进行的是安全方面
的处理,要防止SQL注入,要防止php代码
的攻击,


此时$action的值为空,
$frames的值不为 null ,会调用show_admincp_main
方法显示管理员控制面板。
admin.php这个页面的作用
这是管理界面的控制器,不同的action和控制器的加载
都是在admin.php中执行的,
require $admincp->admincpfile($action);
是根据不同的action加载不同的控制器的方法。


管理员登录操作 后台管理的相关的操作都要经过权限
的验证,当通过权限验证后才可以进行相关的操作,
这些权限的管理是细化到不同的操作,在admin.php中
规定了不同的操作的操作码。管理员后台的操作的链接
一般形式是/admin.php?action=XXX




in_array($action, $admincp_actions_normal)
是一个检测权限的方法,一般使用的是ifelse的判断
的方式,使用数组的方式检测权限的有效性。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值