- 6
- 0
- 约2.14万字
- 约 12页
- 2017-04-12 发布于四川
- 举报
Discuz源代码分析系列—common.inc.php
Discuz!源代码分析系列(1)
--./include/common.inc.php
Section One:
//定义PHP一些环境
error_reporting(0);
set_magic_quotes_runtime(0);
//设置Discuz开始的时间
$mtime = explode( , microtime());
$discuz_starttime = $mtime[1] + $mtime[0];
//定义一些常量
define(SYS_DEBUG, FALSE);
define(IN_DISCUZ, TRUE);
define(DISCUZ_ROOT, substr(dirname(__FILE__), 0, -7)); //获得绝对目录
//通用性
if(PHP_VERSION 4.1.0) {
$_GET = $HTTP_GET_VARS;
$_POST = $HTTP_POST_VARS;
$_COOKIE = $HTTP_COOKIE_VARS;
$_SERVER = $HTTP_SERVER_VARS;
$_ENV = $HTTP_ENV_VARS;
$_FILES = $HTTP_POST_FILES;
}
这一段基本上就是设置一下错误报告,把magic_quotes这个sick家伙给关了,然后定一个开始的时间,这样我们在论坛底部看到的Process Time就是通过这个开始的时间和一个结束的时间的差来计算的,然后定义一个IN_DISCUZ为真,这个IN_DISCUZ常量的作用就是在其他inc这样的包含文件中防止被非法引用,一旦没有这个常量的话就出现Access Denied这样的字样然后退出。然后获得Discuz运行的绝对目录。接下来是判断PHP 的版本是4.1 以下还是以上,因为PHP以4.1为一个分界线,在4.1以下以$HTTP_GET_VARS[‘xx’]这样的方式来得到get过来的值,而以后用$_GET来得到get过来的值,这样做的目的是为了无论是什么样的PHP版本,都能用$_GET这样的方式得到,有通用性~!
Section Two:
require_once DISCUZ_ROOT../include/global.func.php;
把include/global.inc.php引用进来,这个文件是Discuz的核心函数文件,包含了Discuz用到的很多通用的函数,可以说它就是一个大的通用函数库。
define(ISROBOT, getrobot());
if(defined(NOROBOT) ISROBOT) {
exit(header(HTTP/1.1 403 Forbidden));
}
这里是定义一个ISROBOT常量,看看浏览者是什么东东,比方说如果浏览者是一个robot那么就直接来一个 403 Forbidden了……
define(MAGIC_QUOTES_GPC, get_magic_quotes_gpc());
isset($_REQUEST[GLOBALS]) exit(Access Error);
foreach(array(_COOKIE, _POST, _GET) as $_request) {
foreach($$_request as $_key = $_value) {
$_key{0} != _ $$_key = daddslashes($_value);
}
}
(!MAGIC_QUOTES_GPC) $_FILES = daddslashes($_FILES);
此处是过滤提交的变量用的,提高安全性的用法。。
$charset = $dbcharset = $forumfounders = $metakeywords = $extrahead = ;
$plugins = $hooks = $admincp = array();
require_once DISCUZ_ROOT../config.inc.php;
$_DCOOKIE = $_DSESSION = $_DCACHE = $_DPLUGIN = $advlist = array();
$prelength = strlen($cookiepre);
foreach($_COOKIE as $key = $val) {
if(substr($key, 0, $prelength) == $cookiepre) {
原创力文档

文档评论(0)