DISCUZ架构:common.inc.php文件分析2
以下为引用的内容:
$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) {
$_DCOOKIE[(substr($key, $prelength))] = MAGIC_QUOTES_GPC ? $val : daddslashes($val);
}
}
初始化一些变量,然后引用config.inc.php这个配置文件,这样开始初始化程序的一些东西了。接下来的一个循环把$_COOKIE中的东西取出来存到$_DCOOKIE这个数组中。注意:在登陆的时候Discuz会把登陆信息存放到$_COOKIE中去。在下面一段会有取出的代码。
以下为引用的内容: unset($prelength, $_request, $_key, $_value); |
这一部分代码是提高安全用的,防一些非法的入侵,include/security.inc.php文件中就是这样一些检查。
以下为引用的内容: require_once DISCUZ_ROOT.'./include/db_'.$database.'.class.php'; |
第一行是把include/db_mysql.class.php引用进来,这个文件是一个数据库的类。我觉得是不是放在这里太早了点?
然后接下的作用就是得到自身的名称$PHP_SELF,自身的文件名字$SCRIPT_FILENAME,论坛的地址$boardurl,得到浏览者的一些信息,比方说ip地址,浏览器类型等等。
以下为引用的内容: preg_match("/[\d\.]{7,15}/", $onlineip, $onlineipmatches); |
看看ip是不是点分段,7-15个数字之间,用到了一个正则表达式,
以下为引用的内容: $cachelost = (@include DISCUZ_ROOT.'./forumdata/cache/cache_settings.php') ? '' : 'settings'; |
这一段是获得./forumdata/cache/cache_settings.php(即缓存下的设置数组,并展开,方面以后的写法
解释一下extract的用法:
用来将变量从数组中导入到当前的符号表中。接受结合数组 var_array 作为参数并将键名当作变量名,值作为变量的值。对每个键/值对都会在当前的符号表中建立变量,并受到 extract_type 和 prefix 参数的影响。
以下为引用的内容: if($gzipcompress && function_exists('ob_gzhandler') && CURSCRIPT != 'wap') { |
检查gzip是不是打开了,打开就用ob_gzhandler,没有就用ob_start。
GZIP可以加快页面传输速度的.
以下为引用的内容: if(!empty($loadctrl) && substr(PHP_OS, 0, 3) != 'WIN') { |
以下为引用的内容: if(defined('CURSCRIPT') && in_array(CURSCRIPT, array('index', 'forumdisplay', 'viewthread', 'post', 'blog', 'pm', 'topicadmin', 'register', 'archiver'))) { |