DEDECMSV3 文件代码流程功能分析_DedeCms教程
教程Tag:暂无Tag,欢迎添加,赚取U币!
DEDECMSV3 文件代码流程功能分析(3),希望有助于dedecms整合,扩展
dede很多时候用dede_后面加表,好处是,大家可以安装时,定义自己的表的前缀,这样安全性提高了,
那么,dede_,dede是怎么处理的,很轻易想到,在mysql类库处理里面替换dede_为表的前缀,
关于dede_替换过程:
首先找到的是./include/pub_db_mysql.php
行252 有
function SetQuery($sql){}
处理这个这个替换过程
具体的处理看:
256行有:$prefix="dede_";
262行有:$np = strlen($prefix);
263行有:$restr = '';
267行有:$test = substr($sql, $j, $np);
好在看286行:
CODE:
if ($test == $prefix && !$inQuote)
{
$restr .= $this->dbPrefix;
$j = $np-1;
}
[Copy to clipboard]
当我们获得sql语句中有dede_,那么$restr前面就加载表头。
注重:264行 for($j=0; $j < $n; $j ){}循环语句
我在想,为什么dedecms要用for循环对sql语句的每个字符都要严格过滤,也是出于安全考虑,防止sql注入
另外:我看到了266行:$c = $sql{$j};后来查了手册:
手册是这么解释的:
访问字符串中的字符
字符串中的字符可以通过在字符串之后用花括号指定所要字符从零开始的偏移量来访问。
dede很多时候用dede_后面加表,好处是,大家可以安装时,定义自己的表的前缀,这样安全性提高了,
那么,dede_,dede是怎么处理的,很轻易想到,在mysql类库处理里面替换dede_为表的前缀,
关于dede_替换过程:
首先找到的是./include/pub_db_mysql.php
行252 有
function SetQuery($sql){}
处理这个这个替换过程
具体的处理看:
256行有:$prefix="dede_";
262行有:$np = strlen($prefix);
263行有:$restr = '';
267行有:$test = substr($sql, $j, $np);
好在看286行:
CODE:
if ($test == $prefix && !$inQuote)
{
$restr .= $this->dbPrefix;
$j = $np-1;
}
[Copy to clipboard]
当我们获得sql语句中有dede_,那么$restr前面就加载表头。
注重:264行 for($j=0; $j < $n; $j ){}循环语句
我在想,为什么dedecms要用for循环对sql语句的每个字符都要严格过滤,也是出于安全考虑,防止sql注入
另外:我看到了266行:$c = $sql{$j};后来查了手册:
手册是这么解释的:
访问字符串中的字符
字符串中的字符可以通过在字符串之后用花括号指定所要字符从零开始的偏移量来访问。
相关DedeCms教程:
- Dedecms生成百度地图图文教程
- 织梦dedecms生成下拉式友情链接列表
- DEDECMS使用拼音首字母做栏目名称
- 织梦DEDECMS站群增强版 DedeCMS搭建站群首选
- DedeCMS Error:Tag disabled:php错误的完整处理方法
- dedecms编码转换方法 gbk转UTF-8,UTF-8转GBK
- 防XSS,sql注射,代码执行,文件包含的通用代码
- DedeCms教程:优化DedeCMS搜索结果
- DedeCms教程:Linux+Apache+PHP+MySQL服务器环境(CentOS篇)
- DedeCms教程:LuManager服务器管理软件安装DEDECMS软件
- DedeCms教程:Ubuntu/Debian上安装 PHP 5.3, Nginx 和 PHP-fpm
- DedeCms教程:windows server 2003 php 环境搭建