您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > discuz源码分析
Discuz源码分析林超旗林超旗林超旗林超旗整理整理整理整理2010-06-042010-06-042010-06-042010-06-04目目目目录录录录discuz源代码分析[1]...............................................................................................................................................................................................................3discuz源代码分析[2]............................................................................................................................................................................................................17discuz源代码分析[3]............................................................................................................................................................................................................25discuz源代码分析[4]............................................................................................................................................................................................................36discuz源代码分析[5]............................................................................................................................................................................................................42discuz源代码分析[6]............................................................................................................................................................................................................52discuz源代码分析[7]............................................................................................................................................................................................................55discuz源代码分析[8]............................................................................................................................................................................................................59discuz源代码分析[9]............................................................................................................................................................................................................70discuz源代码分析[10]..........................................................................................................................................................................................................73discuz源代码分析[11]..........................................................................................................................................................................................................78discuzdiscuzdiscuzdiscuz源代码分析[1][1][1][1]2008年01月05日星期六12:01第一个文件当然是分析./include/common.inc.php这个文件,这个是Discuz的核心中的核心,基本上每次操作都include到了这个文件,下面就分七段来分析这个文件:SectionOne:以下内容为程序代码://定义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家伙给关了,然后定一个开始的时间,这样我们在论坛底部看到的ProcessTime就是通过这个开始的时间和一个结束的时间的差来计算的,然后定义一个IN_DISCUZ为真,这个IN_DISCUZ常量的作用就是在其他inc这样的包含文件中防止被非法引用,一旦没有这个常量的话就出现AccessDenied这样的字样然后退出。然后获得Discuz运行的绝对目录。接下来是判断PHP的版本是4.1以下还是以上,因为PHP以4.1为一个分界线,在4.1以下以$HTTP_GET_VARS[‘xx’]这样的方式来得到get过来的值,而以后用$_GET来得到get过来的值,这样做的目的是为了无论是什么样的PHP版本,都能用$_GET这样的方式得到,有通用性~!以下内容为程序代码:require_onceDISCUZ_ROOT.'./include/global.func.php';把include/global.inc.php引用进来,这个文件是Discuz的核心函数文件,包含了Discuz用到的很多通用的函数,可以说它就是一个大的通用函数库。以下内容为程序代码:define('ISROBOT',getrobot());if(defined('NOROBOT')&&ISROBOT){exit(header(HTTP/1.1403Forbidden));}这里是定义一个ISROBOT常量,看看浏览者是什么东东,比方说如果浏览者是一个robot那么就直接来一个403Forbidden了……以下内容为程序代码:define('MAGIC_QUOTES_GPC',get_magic_quotes_gpc());isset($_REQUEST['GLOBALS'])&&exit('AccessError');foreach(array('_COOKIE','_POST','_GET')as$_request){foreach($$_requestas$_key=$_value){$_key{0}!='_'&&$$_key=daddslashes($_value);}}(!MAGIC_QUOTES_GPC)&&$_FILES=daddslashes($_FILES);此处是过滤提交的变量用的,提高安全性的用法。。以下内容为程序代码:$charset=$dbcharset=$forumfounders=$metakeywords=$extrahead='';$plugins=$hooks=$admincp=array();require_onceDISCUZ_ROOT.'./config.inc.php';$_DCOOKIE=$_DSESSION=$_DCACHE=$_DPLUGIN=$advlist=array();$prelength=strlen($cookiepre);foreach($_COOKIEas$key=$val){if(substr($key,0,$prelength)==$cookiepre){$_DCOOKIE[(substr($key,$prelength))]=MAGIC_QUOTES_GPC?$val:daddslashes($val);}}初始化一些变量,然后引用config.inc.php这个配置文件,这样开始初始化程序的一些东西了。接下来的一个循环把$_COOKIE中的东西取出来存到$_DCOOKIE这个数组中。注意:在登陆的时候Discuz会把登陆信息存放到$_COOKIE中去。在下面一段会有取出的代码。以下内容为程序代码:unset($prelength,$_request,$_key,$_value);$timestamp=time();if($attackevasive){require_onceDISCUZ_ROOT.'./include/security.inc.php';}这一部分代码是提高安全用的,防一些非法的入侵,include/security.inc.php文件中就是这样一些检查。以下内容为程序代码:require_onceDISCUZ_ROOT.'./include/db_'.$database.'.class.php';$PHP_SELF=$_SERVER['PHP_SELF']?$_SERVER['PHP_SELF']:$_SERVER['SCRIPT_NAME'];$SCRIPT_FILENAME=s
本文标题:discuz源码分析
链接地址:https://www.777doc.com/doc-6147006 .html