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

先看一下定义:

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

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

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

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

<?php
namespace Ceshi\Controller;
use Think\Controller;
class LoginController extends Controller
{
public function login()
{
echo "欢迎登陆!";
}
}

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style type="text/css">
*{ margin:0px auto; padding:0px}
</style>
</head>
<body>
<div>您访问的操作方法有误!</div>
</body>
</html>

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

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

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

<?php
namespace Ceshi\Controller;
use Think\Controller;
class LoginController extends Controller
{
public function login()
{
echo "欢迎登陆!";
}
public function _empty(){
echo "您访问的操作方法不存在!";
}
}

  

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

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

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

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

解决方法:

新建一个Empty控制器:

EmptyController.class.php

<?php
namespace Ceshi\Controller;
use Think\Controller;
class EmptyController extends Controller
{
public function _empty(){
echo "您访问的控制器有误哦";
}
}

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

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

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

thinkphp的空控制器和空操作以及对应解决方法的更多相关文章

  1. thinkphp5空控制器和空操作

    thinkphp5空控制器和空操作 一.总结 1.空控制器和空操作用:空控制器和空操作都是为了防止网站上的用户恶意输入,网站上线的话必须加上, 2.空操作:空操作就是在一般的控制器里面加上一个 _em ...

  2. 【tp5】tp5实现空模块、空控制器、空操作的页面404跳转

    写在最开始:本教程适用于tp5路由的[强制模式+半pathinfo模式+pathinfo模式],通用. 比网上的[通过路由去控制空模块更强力.更全面]. PS:路由控制空模块缺点:仅仅在[强制模式下才 ...

  3. thinkphp5.0 空模块、空控制器、空方法

    空模块 'exception_handle' => function(Exception $e){ // 参数验证错误 if ($e instanceof \think\exception\Va ...

  4. ThinkPHP3.2 中空方法、空控制器和空模块的设置

    ThinkPHP3.2 中空方法.空控制器和空模块的设置 1.空方法设置 问题: 当你访问一个不存在的方法的时候: 如: http://localhost/test/index.php/Home/Us ...

  5. TP框架 ---空控制器和空操作

    通过之前的学习我们知道了index.php是一个入口文件,如果没有这个入口文件的话,我们需要自己创建! [视图模板文件创建] 视图模板文件存放发位置在: 里面没有模板文件 如果我们想要访问Login控 ...

  6. TP框架基础 (二) ---空控制器和空操作

    通过之前的学习我们知道了index.php是一个入口文件,如果没有这个入口文件的话,我们需要自己创建! [视图模板文件创建] 视图模板文件存放发位置在: 里面没有模板文件 如果我们想要访问Login控 ...

  7. TP3.2框架,实现空模块、空控制器、空操作的页面404替换||同步实现apache报错404页面替换

    一,前言 一.1)以下代码是在TP3.0版本之后,URL的默认模式=>PATHINFO的前提下进行的.(通俗点,URL中index.php必须存在且正确) 代码和讲解如下: 1.空模块解决:ht ...

  8. Tp5 空模块、空控制器、空方法的处理

    1.空模块处理 如果是开启了路由 可直接找到route.php文件,具体的位置看个人放置的位置,在里面新增一个语句 '__miss__' => ['portal/index/errorMsg', ...

  9. 关于“类不能支持Automation操作”错误的解决方法

    一段程序IE上老是提示“类不支持Automation操作”的错误,IE6.7.8都一样,但是Firefox可以,后来网上找到如下解决方法: 重新注册下以下文件,问题便解决了:msscript.ocxd ...

随机推荐

  1. asp.net已流的方式下载文件

    string filePath = context.Server.MapPath("~/" + uploadFolder+"/"+file_name);//路径 ...

  2. javaWeb学习总结(7)- 使用Session防止表单重复提交

    在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提 ...

  3. javaWeb学习总结(1)- Tomcat服务器学习和使用(2)

    一.Tomcat服务器端口的配置 Tomcat的所有配置都放在conf文件夹之中,里面的server.xml文件是配置的核心文件. 如果想修改Tomcat服务器的启动端口,则可以在server.xml ...

  4. nrm是什么?以及nrm的安装与命令

    nrm的作用与安装使用 一.nrm是什么? 这是官方的原话: 开发的npm registry 管理工具 nrm, 能够查看和切换当前使用的registry, 最近NPM经常 down 掉, 这个还是很 ...

  5. javaSE_07Java中类和对象-封装特性--练习

    1.编写封装一个学生类,有姓名,有年龄,有性别,有英语成绩,数学成绩,语文成绩,一个学生类,我们关注姓名,年龄,学历等信息,要求年龄必须在19-40岁之间,默认为19,学历必须是大专,本科,研究生这几 ...

  6. openvpn实现内网 映射到 外网

    openvpn实现内网 映射到 外网 场景介绍: 机器介绍 本地一台Ubuntu服务器A , 处于内网中 , 无外网IP 外网一台Ubuntu服务器B , 外网地址139.199.4.205 目标 : ...

  7. 产品经理必备工具-Axure(1)

    资源下载: Axure的中文官方下载地址:https://www.axure.com.cn/3510/ Axure汉化包:https://www.axure.com.cn/2616/ Axure元件库 ...

  8. HTML+CSS·经常使用的设计方法

    HTML+CSS·经常使用的设计方法: ======================================================= margin[外] = = padding[内] ...

  9. chip-seq数据分析中peak-calling软件-------MACS的安装

    1.下载MACS软件安装包(作者的系统为Ubuntu) 网址链接:http://liulab.dfci.harvard.edu/MACS/ 2.解压文件: tar -zxvf MACS**.tar.g ...

  10. HTML5 Web Worker简单使用

    Web Workers 是 HTML5 提供的一个javascript多线程解决方案,我们可以将一些大计算量的代码交由web Worker运行而不冻结用户界面. 一:如何使用Worker Web Wo ...