前言
本文分为通读局部 和 破绽局部 通读局部个人觉得写的还不怎样完善,师傅们见谅,能够直接跳到后面的破绽局部看:)
通读局部
序
这是一个简单的MVC架构的CMS,开发者运用了他本人开发的一套框架—FrPHP
- 大致目录构造
A:寄存后台的控制器 模板 插件等
Home:同上,寄存的用户相关的控制器和模板文件
Conf:配置文件目录
Frphp MVC框架目录
其他的要么里面没啥,要么一看就晓得的
Index.php
定义了一些常量然后包含了 FrPHP框架中的Fr.php 跟进
可见其定义了一个FrPHP类(25行)然后包含了 config.php
我们继续跟进看看config.php里面有什么 数据库衔接的配置文件(这边是我装置完之后的源码)
我们继续回到方才的FrPHP类 看看结构函数
又是定义了一堆常量。这边大多数常量都能看名字晓得个大约。我们用动态调试跑一下看看常量详细值。
详细就是这些
这边59-71行(Fr.php)对一些文件停止了包含。我们继续跟进。
/common/Functions.php
这里引入了FrPHP框架的公共函数库
/CONF/Functions.php
这边引入了项目的公共函数库(主要是一些CMS功用上的函数)
然后遍历/Extend 扩展目录 假如存在文件称号含有”.php“的文件 就包含它。
Arraypage / page 主要是和内容分页相关的函数
compressimage主要和图片处置有关的函数
DatabaseTool 主要和数据库操作有关
DB_API也差不多
FrSession 重写了session 把session存到了redis中
pinyin 是汉字转拼音的
vercode是考证码相关的
还有二维码,phpmailer 阿里,微信支付等杂七杂八的
然后检测缓存文件夹能否存在 不存在就创立
这边 FrPHP的结构函数局部就完毕了 然后回到它的RUN办法
90行设置数据库配置
此处没有数据就会给出报错,引导进入装置程序。
这边说到装置就顺便插播下装置这边
开头检测lock文件 否则exit() ,那这边就没有重装破绽了
这边经过act参数来肯定装置步骤
值得留意的是act为testdb这边 是存在sql注入的 不过前提是得找一个恣意文件删除的破绽来把lock文件删掉。。
回到上文
91行检测开发环境
主要是修正报错和cookie的httponly之类的相关配置
92行去除掉字符转义 ,后面作者定义了特地处置承受数据的函数
路由剖析
94行开端路由
首先判别能否有开启redis存session的功用 ,有就运用。
下面主要是判别恳求有没有session_id没有就给客户端设置一个
131-135行
获取指定要访问的页面,这边对url做了个url解码
我们动态调试下看看参数是啥
http://10.2.91.245/index.php?XDEBUG_SESSION_START=10062
137行开端从缓存中读取系统配置,没有就去数据库里找(M(’sysconfig’)→findAll())
我们看写下getCache函数
传入$str 经过 $s = *md5*(*md5*($str.'frphp'.$str));
拼接变成缓存的文件名
然后639行拼接途径 640行检测缓存文件能否存在
643-646检测文件时间 获取缓存内容 之后判别缓存时间能否超时 超时就删掉 不超时就返回
回到上文路由处置,首先会从缓存中获取配置
没获取到缓存文件就从数据库中找 找到后设置缓存。 获取到了就从缓存中读取。
然后判别能否设置了wap 为1 默许为0
然后对$url($_SERVERS[‘REQUEST_URI’])停止交换 路由到wap页面
继续往下走
这边开端引入自定义路由 先设置了个route_ok变量为false
这边先判别 open_url_route能否为真 这个常量是一开端结构函数中获取一大堆常量的的中央获取的
为1
随后包含了Conf/route.php文件将返回值传给$open_url_route 我们跟进去看看,返回了路由匹配规则这边配合注释看
return [ /** ['正则url','系统内真实链接','传输方式POST/GET,或者为空,则表示POST/GET都接纳'] 假如有多条匹配,默许第一条有效 demo: ['/\/base\/([0-9]+)\.html$/','Home/test/id/$1','GET'], ['/\/xbase\/([0-9]+)\/(\w+)\.html$/','Home/test/id/$1/sq/$2','POST'], ['/\/test_([0-9]+)\.html$/','Home/test/id/$1','GET'], ['/\/abc\.html$/','/shangpin.html',''], **/ //以下规则不可删除,否则会报错! //http://demo.xxxxcms.cn/Home/screen/molds/product/categories/3 ['/^\/screen-(\w+)-([0-9]+)-(.*)/','Screen/index/molds/$1/tid/$2/jz_screen/$3',''], ['/^\/searchAll(.*)/','Home/searchAll','GET'], ['/^\/search(.*)/','Home/search','GET'], ];
感谢您的来访,获取更多精彩文章请收藏本站。
![](https://www.gyzsq.com/wp-content/uploads/2022/07/9259adea4619.gif)
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
3 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
![头像](/wp-content/themes/zibll/img/avatar-default.png)
- 最新
- 最热
只看作者