- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PHPCMS整站代码分析讲解
PHPCMS 整站代码分析讲解(一)昨天在网上逛看到这个帖子,就转来与大家分享!原作者逆雪寒。首先我对 PHPCMS 的头程序文件开始讲解 : include/common.inc.php 这个文件是程序启动的核心文件.[Copy to clipboard] [ - ]CODE:?php/**代码讲解分析:逆雪寒. 2007 - 12 - 20 */$mtime = explode( , microtime()); $phpcms_starttime = $mtime[1] + $mtime[0];/**计算脚本开始运行的时间。很常见的写法。最后结算还在程序运行的终点位置。讲到了在给各位说。*/unset($LANG, $_REQUEST, $HTTP_ENV_VARS, $HTTP_POST_VARS, $HTTP_GET_VARS, $HTTP_POST_FILES, $HTTP_COOKIE_VARS);/**把 $HTTP_ENV_VARS $HTTP_POST_VARS 全局变量设置为 NULL 因为php4.1.0以上默认以 $_POST 来替代。unset后防止程序运行在低版本会出现安全等问题。比如变量注入*/set_magic_quotes_runtime(0); //地球人都知道。关了字符窜入库自动转意比如 my name is onx 转成 my name is on \x 为了最大的程序性能所以我们关掉吧~哈哈define(IN_PHPCMS, TRUE); /**程序入口标记。为什么需要这个东西呢。就好比你进一个小区,保安大哥哥肯定要你签字或是挂个鸟牌证明你是从正门进来的。防止你翻墙进入去偷东西搞破坏。这个入口标记也有这个功能。在这里定义了一个常量 IN_PHPCMS 为 TRUE ,然后我在其他程序文件里面检查这个标记。如果不存在或不为真,那么就基本可以肯定你这个家伙是个小偷来的。人可能翻墙进入。但程序怎么翻墙呢。只要在php.ini文件里面激活 allow_url_fopen选项,include() 就可以包含 URL 地址了。你想下如果你有个放密码的PHP文件。如果给人家include 了以后。你怕不怕。*/define(PHPCMS_ROOT, str_replace(\\, /, substr(dirname(__FILE__), 0, -8)));/**为了程序产品的跨平台。自动获取程序的安装目录路径 ,定义为 PHPCMS_ROOT 常量。方便以后程序使用。建议大家都这样做哦*/require PHPCMS_ROOT./include/global.func.php; /**包含全局函数 global.func.php 文件。里面放了些程序全局都有需要用的函数.大家看到了吧。常量 PHPCMS_ROOT 已经发挥作用。这样程序给人家发布到了二级目录下。也不需要人家手动改整站根目录路径了。自己好好理解下。。。。。*/$search_arr = array(/ union /i,/ select /i,/ update /i,/ outfile /i,/ or /i);/**(/ union /i) 这个是正则的写法?不懂正则的自己百度找教程来学。这里不详细说了*/$replace_arr = array( union , select , update , outfile , or );/**看这个意思很明了。 union :连接两条SQL语句。 outfile : 主要用来导出数据库资料到其他介质上。干啥字要定义这两个变量呢?在 global.func.php 文件(前面已经加载)里面有个函数 strip_sql() 各位可以看下。function strip_sql($string){global $search_arr,$replace_arr;return is_array($string) ? array_map(strip_sql, $string) : preg_replace($search_arr, $replace_arr, $string);}函数里面定义了这两个变量为 global全局变量。那么函数里就可以直接使用了。先讲解下这个函数吧。顾名思义这个函数是过滤字符窜里面的SQL语句使得关键的SQL语句单词失效。主要过滤那些SQL语句呢。主要是这几个关键字: union select update outfile or 等。因为这几个SQL字是极度容易在$_GET传输中给截注.这个函数写得实在精妙。 is_array 来判断 $string 是否为数组。如果是就 array_map() 函数来递归过滤 $string数组里面的每一个单
文档评论(0)