ThinkPHP框架之空控制器

  HOME代表的是模块  前台可以用Home 后台用Admin   Model View Controller  统称为MVC

  Model  是数据模型 主要是和数据库打交道的  View代表显示的模 Controller 控制器 

  MVC模式 都遵循“约定胜于配置” 必须要遵循规则 

  ThinkPHP 中的common文件夹是TP框架自带的一些函数  conf文件夹下的convertion.php 含有TP所有的配置  尽量不要修改 Lang 语言包 Library 存放的都是核心类文件,其中的think文件夹里面含有很多的类文件 里面的controller.class.php 是所有控制器的父类   

  现在我在Home文件夹下的conf文件夹的config 文件中建了一个MainController.class.php文件 这其中有个test的方法,而这个test想要展示的是一个模板,那么我就要到view文件夹下建一个文件夹是和MainController是对应的 这个文件夹应该命名为Main,(我在Main文件夹下建了一个名为test.html的模板,那么我在MainController.class.php中调用的时候之间用 $this->display()//$this->show() 就可以了),同样的如果是IndexController.class.php 那么view文件夹下要建一个名为Index的文件夹

   如果我要访问控制器MainController.class.php下的一个方法tess 而这个方法不存在,那么就会出现这种情况,如图所示这样我们的所使用的框架及版本等等都会泄露,这样是非常不友好的

这时我们就要想办法把这些隐藏起来, 在MainController.class.php中做一个方法 名为_empty

funtion _empty()
{
       echo"客官,您访问的方法不正确"; //这里也可以插入视图
}

如果我们访问的是一个不存在的控制器,那么也会泄露我们的信息 这样我们需要在文件夹Controller中建一个名为EmptyController的控制器

<?php

namespace Home/Controller;

use Think/Controller;

class EmptyController extends Controller
{
      function _empty() //如果顾客访问的是一个空的控制器,那么里面的方法必然也是空的
              {
                   echo"客官,此控制器不存在";
              }
}
时间: 2024-10-09 21:39:15

ThinkPHP框架之空控制器的相关文章

TP框架部分---空控制器

<?php namespace Admin\Controller; use Think\Controller; class DengLuController extends Controller { public function test() { //echo "这是测试的" $this->assign("a","world"); $this->show(); } } //这里面只有test方法,如果访问空的方法时,例如在浏览

ThinkPHP框架下自定义控制器方法

每个模块是一个Action文件,因此应用开发中的一个重要过程就是给不同的模块定义具体的操作.一个应用如果不需要和数据库交互的时候可以不需要定义模型类,但是必须定义Action控制器,一般位于项目的Lib/Action目录下面. Action控制器的定义非常简单,只要继承Action基础类就可以了,例如: Class UserAction extends Action{} 控制器文件的名称是UserAction.class.php. 如果我们要执行下面的URL http://localhost/A

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

通过之前的学习我们知道了index.php是一个入口文件,如果没有这个入口文件的话,我们需要自己创建! [视图模板文件创建] 视图模板文件存放发位置在: 里面没有模板文件 如果我们想要访问Login控制器中的Login方法,首先我们要创建一个Login控制器对应的模板文件夹,该文件夹就对应着Login控制器: 然后在Login文件夹下再创建一个login.html的模板文件来对应Login控制器下的Login方法: 在login.html里面写入要显示的代码: 然后再次请求: [url地址大小写

thinkphp的空控制器和空操作以及对应解决方法

在上篇随笔中我们已经知道了tp框架的四种访问方式,那么当在地址栏输入不存在的操作方法.控制器会怎么样呢? 先看一下定义: 空操作:一个对象(控制器)调用本身不存在的方法 空控制器:在实例化控制器对象的时候,没有找到指定的类 首先,在Application文件下新建Ceshi模块,并在Ceshi模块下按照Home模块建立相同的文件夹,如下图: 1)在Controller文件夹下新建Login控制器: <?php namespace Ceshi\Controller; use Think\Contr

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

原文 http://www.cnblogs.com/hanqishihu/p/5717036.html 空操作:没有指定的操作方法 空控制器:没有指定控制器 空操作: 一般网站处于安全考虑不给用户提示任何错误信息,空控制器:(为了防止对我们的网站进行攻击,看不出用什么做的网站) "空操作"本质意思:一个对象(控制器)调用本身不存在的方法(空操作就是访问了原来的控制器里没有的操作) 在OOP里边,对象调用本身不存在方法,处于用户体验比较好的角度考虑,我们可以在类里边制作一个魔术方法:fu

Thinkphp 空操作、空控制器、命名空间

1.空操作 空操作是指系统在找不到请求的操作方法的时候,会定位到空操作(_empty)方法来执行,利用这个机制,我们可以实现错误页面和一些URL的优化. http://网址/index.php/Home/Main/login http://网址/index.php/Home/Main/hello  空操作 出现页面: 显示的错误信息过于详细,为安全以及优化页面起见,实行空操作 1.做一个_empty()方法.要在子类里面写,不要再父类里(推荐使用) function _empty() { ech

PHP反射(ReflectionClass、ReflectionMethod)在ThinkPHP框架的控制器调度模块中的应用

ThinkPHP框架的控制器模块是如何实现 前控制器.后控制器,及如何执行带参数的方法? PHP系统自带的 ReflectionClass.ReflectionMethod 类,可以反射用户自定义类的中属性,方法的权限和参数等信息,通过这些信息可以准确的控制方法的执行. ReflectionClass:  [PHP手册]详情 主要用的方法: hasMethod(string)  是否存在某个方法 getMethod(string)  获取方法 ReflectionMethod:  [PHP手册]

ThinkPHP空操作和空控制器的处理

所谓的空操作和空控制器,简而言之就是系统中不存在该方法或控制器,导致系统报错(本文版本3.2.3). 正确URL(测试环境):  http://oa.com/index.php/admin/public/login  访问如下: 一:空操作处理 修改方法为loginw时报错如下: 系统默认内置报错机制:1.用户体验差  2.严重安全隐患. 查看父类控制器文件Controller.class.php,发现如下代码: 意思是说,如果调用的方法不存在但定义了_empty()方法,就会去执行_empty

ThinkPHP框架系统源码解析——URL路由解析

1 一.ThinkPHP框架目录 2 /test/index.php //项目入口文件 3 /ThinkPHP/ThinkPHP.php //框架入口文件 4 5 Common 框架公共文件目录(函数库) 6 ThinkPHP/Common/runtime.php //框架初次运行文件 7 ThinkPHP/Common/common.php //框架基础函数库 8 ThinkPHP/Common/functions.php //标准模式公共函数库 9 10 Conf 框架配置文件目录 11 T