空操作:乙個物件(控制器)呼叫本身不存在的方法
空控制器:在例項化控制器物件的時候,沒有找到指定的類
1)在controller資料夾下新建login控制器:12
3456
78910
<?php
namespace
ceshi\controller;
use
think\controller;
class
logincontroller
extends
controller
}
一、 在位址列訪問不存在的方法,會怎麼樣?
通過此頁面,我們可以知道:
(1)這樣的介面暴露了我們是用什麼工具寫的**,同時暴露了thinkphp的版本號,如果黑客找到該版本號的漏洞就可以攻擊你了。
(2)其次,這樣的介面很不友好,對於使用者來說,他們看不懂也不知道是**出錯了。
我們應該給出更為安全、更為友好的提示。
父類中有個方法如下圖,我們可以仿照這個來做:
第一種方法:做乙個空的模板
1)在view資料夾下建乙個ceshi資料夾,
簡單布局一下login.html 頁面12
<
title
>無標題文件
<
style
type="text/css">
*
<
body
>
<
div
>您訪問的操作方法有誤!
2) 再次訪問http://localhost/wamp/thinkphp/index.php/ceshi/login/loginsss
這樣相比只出現**要好的多,但是,我們不可能每輸入乙個不存在的方法就做乙個模板,這樣不切實際,再說我們也不知道使用者下一次會輸入什麼樣的操作方法,所以這種方法並有太大的侷限性。
第二種方法:做乙個空的方法:_empty()方法12
3456
78910
1112
13<?php
namespace
ceshi\controller;
use
think\controller;
class
logincontroller
extends
controller
public
function
_empty()
}
這樣不論訪問到什麼樣的空方法都會顯示「您訪問的操作方法不存在!」如圖:
二、 在位址列訪問不存在的控制器,會怎麼樣?出現同樣的報錯
解決方法:
新建乙個empty控制器:
emptycontroller.class.php12
3456
789<?php
namespace
ceshi\controller;
use
think\controller;
class
emptycontroller
extends
controller
}
再訪問http://localhost/wamp/thinkphp/index.php/ceshi/main/login
換個 http://localhost/wamp/thinkphp/index.php/ceshi/mmmn/login
這樣就可以解決空控制器和空操作的問題了,簡單來說就是做乙個空方法和乙個空控制器的方法,當沒有這種控制器或者方法,就直接跳到你做的頁面中去.~
TP框架部分 空控制器
namespace admin controller usethink controller class denglucontroller extendscontroller 這裡面只有test方法,如果訪問空的方法時,例如在瀏覽器輸入localhost thinkphp index.php adm...
TP的空操作 空控制器 跨控制器呼叫
系統在找不到請求的方法的時候,會定位到 empty 方法處理,利用這個機制,我們可以對使用者請求的不存在的所有操作進行統一。當系統找不到控制器,會定位到空控制器上emptycontroller managercontroller中的方法 public function managertest1 其他...
TP框架 多級控制器,多層控制器
多級控制器是指控制器可以通過子目錄把某個控制器層分組存放,首先需要設定控制器的分級層次,例如,我們設定2級目錄的控制器層 controller level 2,控制器檔案的位置放置如下 controller訪問控制器 useruser分級 組 usertypecontroller.class.php...