您现在的位置是:首页 > 技术交流技术交流
thinkphp之空模块操作action
2017-03-17【技术交流】2038 人已围观
简介意思很简单,就是当调用的模块不存在时,怎么去处理?我们通过代码级别来分析,打开 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:
很赞哦! ()
相关文章
随机图文
oracle数据库中国区裁员
作为一名码农关心数据库软件还是有的。殷雯网站建设工作室做项目基本上用的是mysql数据库,原因是mysql跨平台、免费。虽然我们的项目基...查看thinkphp版本
学习框架的好办法是参考现成的网站,那么学习thinkphp框架第一步就是需要查找自己需要的版本号的程序。方法一:在thinkphp文件夹...css中的-webkit-opacity
opacity -- 字面意思不透明度,是的这个属性是设置目标style的属性透明度.取值: <alphavalue> | ...[C#]int.Parse()与int.TryParse()
C#中对变量的值类型有严格的管控,不像php存在类型自动转换的事情。对不起来就会报错以下是接收textbox值时,c#类型的强制转换代码 i...