您现在的位置是:首页 > 技术交流技术交流
thinkphp之空模块操作action
2017-03-17【技术交流】1672 人已围观
简介意思很简单,就是当调用的模块不存在时,怎么去处理?我们通过代码级别来分析,打开 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:
很赞哦! ()
相关文章
随机图文
-
[C#]int.Parse()与int.TryParse()
C#中对变量的值类型有严格的管控,不像php存在类型自动转换的事情。对不起来就会报错以下是接收textbox值时,c#类型的强制转换代码 i... -
sql中的select join一张图概括
这select join图很叼, 一张就概括了全部! 收藏 -
Waiting (TTFB) 时间超长是什么原因
有时网站打开很慢,浏览器先是一片空白.加载几十秒后才会完整显示.通过F12网站开发者工具发现Waiting (TTFB)加载时间最长.一... -
利用ServerAlias设置多个二级域名和泛域名
已在域名服务提供商处或自己管理的DNS服务器上,将多个域名或A记录(如:0574nb.cn 、www.0574nb.cn、bbs.0574n...