请看上一篇:DZ论坛核心代码分析计划–install包篇
用了两天时间才把global.func.php分析完。还打算3天把common.inc.php文件整完,发现又分出来很多文件。所以这一次帖子改变一下策略。先上global.func.php文件的分析吧。。分析得不好。很多东西我没搞明白到底干嘛用的。。。甚至发现几个在整个DZ的文件系统中都没引用的函数。可能是测试函数吧。不过挺好用的。自己拿了放自己的函数包里了。
因为这个包代码很多。只把个人重要的仔细分析了每个代码块。
在上一个文分析计划里,我其实少上两个文件,一个是DZ论坛全局变量申明表。DZ论坛文件作用表。DZ论坛函数调用处表。
因为分析的东西暂时比较少,所以没有上上来。等全部搞完再说吧。
学习日记如下:
只更新一部分。。。。还有另一部分。。下午更新上来
以下为引用的内容: Golbal.func.php 日记时间:2008年10月7日10:37:34 1、 这个文件是常被引用的文件,所以开头还是采用了惯用的常量判断法。防止被恶意浏览器直接打开 2、 加密函数authcode中的加密有多次的md5叠加加密。保证密码的安全性。在常有的思维中,一般是只加密了一次。而在DZ的加密函数中。加密算法很复杂。分别从md5加密,字符随机截断加密,位运算加密和与密匙结合加密。 3、 DZ的字符处理工作非常好。虽然在下载的时候我们会选择utf-8还是gbk。但是不管是处理字符还是处理数据库链接的时候都是第一考虑字符编码的地方。在db_mysql.class.php文件的数据库链接上就判断了格式是什么。代码如下 $func = empty($pconnect) ? ‘mysql_connect’ : ‘mysql_pconnect’; //建立一个链接给类的属性link之中。并且在建立链接的时候就设定编码方式是如何的。 if(!$this->link = @$func($dbhost, $dbuser, $dbpw, 1)) { $halt && $this->halt(‘Can not connect to MySQL server’); } else { if($this->version() > ‘4.1’) { global $charset, $dbcharset; $dbcharset = $dbcharset2 ? $dbcharset2 : $dbcharset; $dbcharset = !$dbcharset && in_array(strtolower($charset), array(‘gbk’, ‘big5’, ‘utf-8’)) ? str_replace(‘-‘, ”, $charset) : $dbcharset; $serverset = $dbcharset ? ‘character_set_connection=’.$dbcharset.’, character_set_results=’.$dbcharset.’, character_set_client=binary’ : ”; $serverset .= $this->version() > ‘5.0.1’ ? ((empty($serverset) ? ” : ‘,’).’sql_mode=”’) : ”; $serverset && mysql_query("SET $serverset", $this->link); } $string = str_replace(array(‘&’, ‘"’, ‘<‘, ‘>’), array(‘&’, ‘"’, ‘<‘, ‘>’), $string); 在处理截断之后,再将其还原。 $strcut = str_replace(array(‘&’, ‘"’, ‘<‘, ‘>’), array(‘&’, ‘"’, ‘<‘, ‘>’), $strcut); if(is_array($string)) { foreach($string as $key => $val) { $string[$key] = dhtmlspecialchars($val);//如果是数租,遍历数组再调用自身的这个函数对单个字符处理。 } $email = str_replace(array(‘@’, ‘.’), array(‘@’, ‘.’), $email); return $tolink ? ‘<a href="mailto: ‘.$email.’">’.$email.'</a>’: $email; return trim(substr(strrchr($filename, ‘.’), 1, 10)); if(!defined(‘IS_ROBOT’)) { //定义搜索引擎名 $kw_spiders = ‘Bot|Crawl|Spider|slurp|sohu-search|lycos|robozilla’; //定义浏览器种类名 $kw_browsers = ‘MSIE|Netscape|Opera|Konqueror|Mozilla’; //判断是否是这些浏览器,如果是,则定义IS_ROBOT这个常量为假。反之则判断蜘蛛是不是上述已经定义好的搜索引擎,如果是则定义IS_ROBOT这个常量为真。如果都不满足条件,定义IS_ROBOT这个常量为假。 if(preg_match("/($kw_browsers)/i", $_SERVER[‘HTTP_USER_AGENT’])) { define(‘IS_ROBOT’, FALSE); } elseif(preg_match("/($kw_spiders)/i", $_SERVER[‘HTTP_USER_AGENT’])) { define(‘IS_ROBOT’, TRUE); } else { define(‘IS_ROBOT’, FALSE); } } //返回IS_ROBOT这个常量的值 return IS_ROBOT; exit(header("HTTP/1.1 403 Forbidden")); |
更新错误:这些错误是我分析在其调用的地方得知的错误。但不可能我发现一点改一点,所以在这里说明
以下为引用的内容:
checklowerlimit():这个函数是用来检查积分限制的
谢谢下面这些人的帮助
以下为引用的内容:
|
波比源码 » DZ论坛核心代码分析-核心文件global.func.php篇
Great post thank you. Hello Administ . Metropol Halı Karaca Halı Öztekin ve Selçuklu Halı Cami Halısı ve Cami Halıları Türkiye’nin En Büyük Cami Halısı Fabrikasıyız…