您现在的位置是:首页 > 技术交流技术交流
thinkphp之空模块操作action
2017-03-17【技术交流】1863 人已围观
简介意思很简单,就是当调用的模块不存在时,怎么去处理?我们通过代码级别来分析,打开 TP/Lib/Core/App.class.php文件: ...
意思很简单,就是当调用的模块不存在时,怎么去处理?我们通过代码级别来分析,打开 TP/Lib/Core/App.class.php文件:

第一步,它先查找有没有 __hack_module 这个方法。默认是没有的。我们可以定义这个函数,然后通过这个函数来实例化一个模块(比如说,我们可以写一个错误提示模块)。
第二步,假如没有 __hack_module 这个方法,那么,它会查找有没有 EmptyAction.class.php 模块。这时,那我们就可以定义一个EmptyAction.class.php模块来调用,防止报错。
实例演示
在 orange/lib/action/下,创建一个模块EmptyAction.class.php。当输入的模块不存在时,便会调用该模块。这里,我同时创建了一个空方法 _empty(),当模块和方法都不存在时,便会调用。
我们在地址栏输入:php class EmptyAction extends Action{ public function index(){ echo \"你输入的模块不存在,哈哈\"; } public function _empty(){ echo \"你输入的模块和方法都不存在,真悲剧\"; } } ?>
(1)http://localhost/orange/index.php/Username/ //没有Username这个模块
(2)http://localhost/orange/index.php/Username/haha/ //模块Username,方法haha,都不存在
不过话说回来 ,thinkphp有是app_debug模式的,就是调试模式。 如果关闭了调试模式,这种空模块操作也不会给网站带来暴露信息的漏洞机会。 一般页面是空白处理。 黑客同样没有可乘之机。
关注宁波网站建设博客,更多精彩分享,敬请期待!
Tags:
很赞哦! ()
相关文章
随机图文
解决百度ueditor插入动态地图空白 支持iframe方法
ueditor是百度推出的html富文本编辑器.还是非常好用的,新版本增加了严格的安全限止甚至限止到了自己的百度插入代码,导致插入百度出现...linux显示当前版本
有时接手维护一下linux服务器,我们第一步需要确定当前版本,以下命令可以尝试 先以root登陆1、# uname -a (Linux查看...FTP的port模式和pasv模式
经常使用ftp工具进行网站文件的上传和下载.有时因为网络环境和服务器配置问题,经常遇到ftp工具卡顿问题.这时就需要切换port和pas...dedecms5.7生成文件时提示“模板文件不存在,无法解析”的解决方法
dedecms是一个非常经典的cms系统,并且开源很多做网站的人都喜欢用他,那么在网站生成文件的时候,出现错误提示“模板文件不存在,无法解析...