# 第6章 TP5.0 請求和響應
=====================================
## 1、系統類(C:\AppServ\www\tp5\thinkphp\library\think)
Config
Controller
Env
Route
Url
View
Request
## 2、系統方法(C:\AppServ\www\tp5\thinkphp\helper.php)
dump(); 格式化輸出
controller(); 調用控制器
action(); 調用方法
config(); 讀取和設置配置文件
url(); 生成URL地址
view(); 加載頁面
request(); 實例化 Request類
## 3、如何獲取請求類
1、系統函數
$request=request();
2、系統Request類
use think\Request;
// 因為Request類屬于單例模式 所以 不能直接new
$request=Request::instance();
3、系統Request類
use think\Request;
// 方法的書寫
public function index(Request $request)
{
dump($request);
}
## 4、獲取用戶請求信息
1、獲取域名
dump($request->domain());
2、獲取URL地址 除域名以外
dump($request->url());
3、 獲取入口文件
dump($request->baseFile());
4、獲取PathInfo路徑
dump($request->pathinfo());
5、獲取PATHINFO路徑 無后綴
dump($request->path());
6、url地址偽靜態后綴
dump($request->ext());
7、偽靜態
就是將路徑偽裝成靜態頁面,讓搜索引擎更好收錄網站,防止別人知道網站真實開發語言
## 5、獲取請求模塊\控制器\方法
1、控制器
$request->controller();
2、方法
$request->action();
3、模塊
$request->module();
## 6、獲取請求相關類型
1、請求類型
$request->method();
2、請求資源類型
$request->type();
3、訪問地址
$request->ip();
4、是否ajax請求
$request->isAjax();
5、獲取所有地址欄參數
$request->param();
6、獲取特定字段
$request->only(['name','id']);
7、剔除字段
$request->except(['name','id']);
## 7、獲取變量
1、判斷是否存在
dump($request->has('id','get'));
dump(input('?get.id'));
2、讀取變量
dump($request->get('id'));
dump(input('get.id'));
dump($request->get());
dump(input('get.'));
3、可以讀取數據類型
get、post、delete、put、session、cookie、server 等
$request->get();
$request->post();
$request->put();
$request->server();
$request->request();
$request->session();
$request->cookie();
## 8、變量的過濾
1、作用
防止惡意輸入、防止sql注入
2、使用
1、全部的數據進行過濾
// 單個方法過濾
$request->filter("htmlspecialchars");
// 多種方法過濾
$request->filter(["htmlspecialchars","strip_tags"]);
2、針對變量過濾
$request->get('name','','htmlspecialchars');
3、密碼過濾之后加密
dump($request->get('pass','','htmlspecialchars,md5'));
## 9、變量的排除和獲取
1、獲取
$request->only('name');
$request->only('name',get);
$request->only(['name','pass'],get);
2、排除
$request->except(['name','pass'],get);
$request->except(['name','pass']);
$request->except('name');
## 10、變量修飾符
1、修飾變量的類型
s 字符串
d 整形
f 浮點型
a 數組
b 布爾型
2、使用
dump(input('get.id/d')); // 強制轉換整形
dump($request->get('id/d'));
## 11、更改變量
// 地址欄訪問 http://www.tp.com/index.php/Index/Index/xiugai?id=10
dump($request->get('id')); // 10
dump($request->get(['id'=>20])); //數組
dump($request->get('id')); // 20
## 12、請求類型判斷
1、系統類
// 判斷是否是get請求
dump($request->isGet());
// 判斷是否是手機端
dump($request->isMobile());
2、系統函數
dump(request()->isGet());
dump(request()->isMobile());
## 13、模擬put、delete請求
1、使用
<form action="{:url('type')}" method="post">
<p>
User:
<input type="text" name="name" id="">
<input type="hidden" name="_method" value="PUT">
</p>
<p>
Pass:
<input type="password" name="pass" id="">
</p>
<p>
<input type="submit" value="提交">
</p>
</form>
2、注意
1、表單的請求類型必須是post
2、需要設置隱藏域傳遞模擬請求類型
## 14、模擬ajax請求和PJAX請求
1、模擬ajax請求
http://www.tp.com/index.php/index/index/type?_ajax=10
2、模擬pjax請求
http://www.tp.com/index.php/index/index/type?_pjax=10
## 15、偽靜態
1、作用
1) URL偽靜態通常是為了滿足更好的SEO效果
2) 為了網站的安全
2、修改偽靜態
在配置文件中進行修改
'url_html_suffix' => 'shtml',
3、獲取當前的偽靜態后綴
$request->ext();
## 16、參數綁定
1、使用
public function banding($id,$name="admin"){
dump($id);
dump($name);
}
http://www.tp.com/index.php/index/index/banding/id/1/name/user
2、注意
1、參數綁定的個數,少于地址欄參數的個數
2、參數綁定的名字,必須和地址欄參數名字一一對應
3、參數綁定可以設置默認值