discuzX3.2 admin.php
2014-06-09 14:19
441 查看
$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的判断
的方式,使用数组的方式检测权限的有效性。
$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的判断
的方式,使用数组的方式检测权限的有效性。
相关文章推荐
- Discuz!X3.1-x3.2 admin.php 防止直接恶意访问
- Discuz教程:X3.1-x3.2后台admin.php防止直接恶意访问
- Discuz! admincp.php xss bug
- Discuz! admin unwizard.inc.php 漏洞利用(Get Webshell)
- discuz X3.2 forum_index.php详解
- DISCUZ源码分析流程详细介绍【admin.php入口】
- Discuz X3.2源码解析 论坛模块(forum.php)转自百度
- Discuz! -tools工具 (x2.5 x3.0 x3.1 x3.2通用) 充值admin 管理员 密码
- 学习Discuz! X3.2记录:一个小提示,可以知道插件php文件语法出问题了
- php版本的discuzX3.2部署的问题收集
- discuz! admin\runwizard.inc.php get-webshell bug
- Discuz原码分析(一)admincp.php
- Discuz论坛2.5 升级到PHP MySQL新版遇到的问题
- Discuz论坛2.5 升级到PHP MySQL新版遇到的问题
- Discuz论坛2.5 升级到PHP MySQL新版遇到的问题
- Discuz论坛2.5 升级到PHP MySQL新版遇到的问题
- 海河写的 Discuz论坛帖子调用js的php代码
- Discuz论坛2.5 升级到PHP MySQL新版遇到的问题
- Discuz论坛2.5 升级到PHP MySQL新版遇到的问题
- Discuz论坛2.5 升级到PHP MySQL新版遇到的问题