【SQL开源代码栏目提醒】:网学会员为广大网友收集整理了,PHPCMS 整站代码分析 - 毕业设计,希望对大家有所帮助!
PHPCMS 整站代码分析讲解1ztPHP 编程 2008-11-29 22:40 阅读23 评论0 字号 大 中 小 转自phpchina 作者逆雪寒一、include/common.inc.php ltphp/代码讲解分析 逆雪寒. 2007 - 12 - 20 /mtime explode microtime phpcms_starttime mtime1 mtime0/计算脚本开始运行的时间。
很常见的写法。
最后结算还在程序运行的终点位置。
讲到了在给各位说。
/unsetLANG _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_runtime0 //地球人都知道。
关了字符窜入库自动转意 比如 my name is onx 转成 my name is on x 为了最大的程序性能所以我们关掉吧哈哈defineIN_PHPCMS TRUE /程序入口标记。
为什么需要这个东西呢。
就好比你进一个小区保安大哥哥肯定要你签字或是挂个鸟牌证明你是从正门进来的。
防止你翻墙进入去偷东西搞破坏。
这个入口标记也有这个功能。
在这里定义了一个常量 IN_PHPCMS 为 TRUE 然后我在其他程序文件里面检查这个标记。
如果不存在或不为真那么就基本可以肯定你这个家伙是个小偷来的。
人可能翻墙进入。
但程序怎么翻墙呢。
只要在php.ini文件里面激活 allow_url_fopen选项include 就可以包含 URL 地址了。
你想下如果你有个 放密码的PHP文件。
如果给人家include 了以后。
你怕不怕。
/definePHPCMS_ROOT str_replacequotquot / substrdirname__FILE__ 0 -8/为了程序产品的跨平台。
自动获取程序的安装目录路径 定义为 PHPCMS_ROOT 常量。
方便以后程序使用。
建议大家都这样做哦/require PHPCMS_ROOT./include/global.func.php /包含 全局函数 global.func.php 文件。
里面放了些程序全局都有需要用的函数.大家看到了吧。
常量 PHPCMS_ROOT 已经发挥作用。
这样程序给人家发布到了 二级目录下。
也不需要人家手动改整站根目录路径了。
自己好好理解下。
。
。
。
。
/search_arr arrayquot/ union /iquotquot/ select /iquotquot/ update /iquotquot/ outfile /iquotquot/ or /iquot/quot/ union /iquot 这个是正则的写法不懂正则的自己百度找教程来学。
这里不详细说了/replace_arr array union select update outfile or /看这个意思很明了。
union 连接两条SQL语句。
outfile : 主要用来导出数据库资料到其他介质上。
干啥字要定义这两个变量呢 在 global.func.php 文件前面已经加载里面有个函数 strip_sql 各位可以看下。
function strip_sqlstringglobal search_arrreplace_arrreturn is_arraystring array_mapstrip_sql string : preg_replacesearch_arr replace_arr string函数里面定义了这两个变量为 global全局变量。
那么函数里就可以直接使用了。
先讲解下这个函数吧。
顾名思义这个函数是过滤字符窜里面的SQL语句使得关键的SQL语句单词失效。
主要过滤那些SQL语句呢。
主要是这几个关键字: union select update outfile or 等。
因为这几个SQL字是极度容易在_GET传输中给截注.这个函数写得实在精妙。
is_array 来判断 string 是否为数组。
如果 是 就 array_map 函数来递归过滤 string数组里面的每一个单元. 每个单元是一个字符窜吧当递归调用 strip_sql 以后 is_array判断 string 肯定为假了因为string已经不是数组而是字符窜。
所以 执行 preg_replace函数。
这个函数很好理解了。
就是替换了。
/_POST strip_
sql_POST_GET strip_sql_GET_COOKIE strip_sql_COOKIE/使用strip_sql函数来过滤 _POST _GET _COOKIE一般不是开源的站。
很少过SQL关键字过滤。
不过这个也是冒很大风险的。
/unsetsearch_arr replace_arr/unset 使用过但以后不需要的变量。
这个是很好的习惯。
第一不会浪费内存。
如果变量存了大量的数据字节而后你的程序是一直不需要用的。
那么就会很浪费内存。
拉底程序性能 . 哈哈。
真很书面。
反正是好习惯我们都要
学习的拉。
/magic_quotes_gpc get_magic_quotes_gpc // get_magic_quotes_gpc检测gpc是否系统自动转意。
gpc 是什么呢 GET POST COOKIE 来来去去就这几个东西罗。
会返回 真或假ifmagic_quotes_gpc_POST new_addslashes_POST_GET new_addslashes_GET/判断一下
系统是否打开了自动对gpc进行转意这个选择。
如果是的话就不需要我们自动转意了。
如果不是那么还是要老百姓的手段。
自己动手丰衣足食。
来看下也是在global.func.php 文件里面定义的这个函数 其实是一个封装好的php的 addslashes 函数的函数。
PHP都自己有了为什么还要自己封装成函数呢理由很简单。
为了以后的扩展更改容易罗。
如果