博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
thinkphp的空控制器和空操作以及对应解决方法
阅读量:5149 次
发布时间:2019-06-13

本文共 1241 字,大约阅读时间需要 4 分钟。

在上篇随笔中我们已经知道了tp框架的四种访问方式,那么当在地址栏输入不存在的操作方法、控制器会怎么样呢?

先看一下定义:

空操作:一个对象(控制器)调用本身不存在的方法

空控制器:在实例化控制器对象的时候,没有找到指定的类

首先,在Application文件下新建Ceshi模块,并在Ceshi模块下按照Home模块建立相同的文件夹,如下图:

1)在Controller文件夹下新建Login控制器:

2)地址栏输入访问地址:http://localhost/wamp/thinkphp/index.php/Ceshi/Login/login

一、 在地址栏访问不存在的方法,会怎么样?

http://localhost/wamp/thinkphp/index.php/Ceshi/Login/loginsss

 

 

通过此页面,我们可以知道:

(1)这样的界面暴露了我们是用什么工具写的代码,同时暴露了thinkphp的版本号,如果黑客找到该版本号的漏洞就可以攻击你了。

(2)其次,这样的界面很不友好,对于用户来说,他们看不懂也不知道是哪里出错了。

如何给出更为安全、更为友好的提示呢?

 

父类中有个方法如下图,我们可以仿照这个来做:

 

 

 

 

第一种方法:做一个空的模板

1)在View文件夹下建一个Ceshi文件夹,路径如下:

loginsss.html

无标题文档
您访问的操作方法有误!

  2) 再次访问http://localhost/wamp/thinkphp/index.php/Ceshi/Login/loginsss

 

这样相比只出现代码要友好的多,但是,我们不可能每输入一个不存在的方法就做一个模板,这样不切实际,再说我们也不知道用户下一次会输入什么样的操作方法,所以这种方法并不可行。

第二种方法:做一个空的方法:_empty()方法

 

  

这样不论访问到什么样的空方法都会显示“您访问的操作方法不存在!”如图:

 

http://localhost/wamp/thinkphp/index.php/Ceshi/Login/logins

 

 

http://localhost/wamp/thinkphp/index.php/Ceshi/Login/aaa

 

二、 在地址栏访问不存在的控制器,会怎么样?出现同样的报错

 

解决方法:

新建一个Empty控制器:

 EmptyController.class.php

 再访问http://localhost/wamp/thinkphp/index.php/Ceshi/Main/login

 

 换个  http://localhost/wamp/thinkphp/index.php/Ceshi/MMMn/login

 

这样就可以解决空控制器和空操作的问题了~.~.~

 

转载于:https://www.cnblogs.com/chenguanai/p/7136021.html

你可能感兴趣的文章
SU suchart命令学习
查看>>
【先定一个小目标】Windows下安装MongoDB 3.2
查看>>
[LeetCode] 560. Subarray Sum Equals K 子数组和为K
查看>>
[LeetCode] 211. Add and Search Word - Data structure design 添加和查找单词-数据结构设计
查看>>
50队列:报数
查看>>
form表单用ge方式提交时ie显示中文参数乱码
查看>>
Java 8 – Convert List to Map
查看>>
并查集的删除操作
查看>>
Part3_lesson4---协处理器访问指令
查看>>
Asp.Net url参数加密存在特殊符号处理方法
查看>>
css3
查看>>
强化学习(五)用时序差分法(TD)求解
查看>>
Python打卡第三周
查看>>
oracle按照in的顺序进行排序
查看>>
Inferred type 'S' for type parameter 'S' is not within its bound;
查看>>
objective里面的单例模式
查看>>
Git常用命令
查看>>
jQuery 遍历
查看>>
k8s中的api server的ca证书,可以和front proxy ca证书一样么?
查看>>
【UVa-679】小球下落——二叉树的编号
查看>>