DISCUZ架构:common.inc.php文件分析1

./include/common.inc.php这个文件Discuz的核心中的核心,基本上每次操作都包含到这个文件,

 

以下为引用的内容:

//定义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)); //获得绝对目录

//通用性,由于PHP版本不一致导致4.1前版本不支持$_GET等数组,在此统一转换后用$_GET获得表单参数.
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这样的方式得到,有通用性~!

 

以下为引用的内容:

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 静止访问了……

 

以下为引用的内容:

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);

根据魔术引号的开关来对变量进行转义.过滤提交的变量用的,提高安全性的用法。。

//说明:这段代码是自动为GET或者POST或者COOKIE中的变量建立一个变量,例如index.php?id=4 经过此段程序则会自动建立一个$id = 4;并且这个4在赋给id之前会经过daddslashes处理,daddslashes是一个存在于global.func.php中的函数,作用就是智能的对字符串使用反斜线引用.
//执行完毕这段foreach后即可把GET  POST COOKIE中所有的值转换为变量.
//可能用到的知识:默认情况下,PHP 指令 magic_quotes_gpc 为 on,它主要是对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。

posted on 2009-09-25 16:13  14的路  阅读(1448)  评论(0编辑  收藏  举报

导航

友情链接:源码下载