å¯ä»¥éè¿`Request`对象å®æå
¨å±è¾å
¥åéçæ£æµãè·ååå®å
¨è¿æ»¤ï¼æ¯æå
æ¬`$_GET`ã`$_POST`ã`$_REQUEST`ã`$_SERVER`ã`$_SESSION`ã`$_COOKIE`ã`$_ENV`çç³»ç»åéï¼ä»¥åæ件ä¸ä¼ ä¿¡æ¯ã
为äºæ¹ä¾¿è¯´æï¼æ¬ç¯å
容çææ示ä¾ä»£ç å使ç¨`Facade`æ¹å¼ï¼å æ¤éè¦é¦å
å¼å
¥
~~~
use think\facade\Request;
~~~
å¦æä½ ä½¿ç¨çæ¯ä¾èµæ³¨å
¥ï¼è¯·èªè¡è°æ´ä»£ç 为å¨æè°ç¨å³å¯ã
主è¦å
容å
æ¬ï¼
[TOC=2,2]
## æ£æµåéæ¯å¦è®¾ç½®
å¯ä»¥ä½¿ç¨`has`æ¹æ³æ¥æ£æµä¸ä¸ªåéåæ°æ¯å¦è®¾ç½®ï¼å¦ä¸ï¼
~~~
Request::has('id','get');
Request::has('name','post');
~~~
åéæ£æµå¯ä»¥æ¯ææææ¯æçç³»ç»åéï¼å
æ¬`get/post/put/request/cookie/server/session/env/file`ã
## åéè·å
åéè·å使ç¨`\think\Request`ç±»çå¦ä¸æ¹æ³ååæ°ï¼
>[info] ### åéç±»åæ¹æ³('åéå/åé修饰符','é»è®¤å¼','è¿æ»¤æ¹æ³')
åéç±»åæ¹æ³å
æ¬ï¼
| æ¹æ³ | æè¿° |
| --- | --- |
| param | è·åå½å请æ±çåé |
| get | è·å $\_GET åé |
| post | è·å $\_POST åé |
| put | è·å PUT åé |
| delete | è·å DELETE åé |
| session | è·å SESSION åé |
| cookie | è·å $\_COOKIE åé |
| request | è·å $\_REQUEST åé |
| server | è·å $\_SERVER åé |
| env | è·å $\_ENV åé |
| route | è·å è·¯ç±ï¼å
æ¬PATHINFOï¼ åé |
| middleware | è·å ä¸é´ä»¶èµå¼/ä¼ éçåé |
| file | è·å $\_FILES åé |
### è·å`PARAM`åé
`PARAM`ç±»ååéæ¯æ¡æ¶æä¾çç¨äºèªå¨è¯å«å½å请æ±çä¸ç§åéè·åæ¹å¼ï¼æ¯ç³»ç»æ¨èçè·å请æ±åæ°çæ¹æ³ï¼ç¨æ³å¦ä¸ï¼
~~~
// è·åå½å请æ±çnameåé
Request::param('name');
// è·åå½å请æ±çææåéï¼ç»è¿è¿æ»¤ï¼
Request::param();
// è·åå½å请æ±æªç»è¿æ»¤çææåé
Request::param(false);
// è·åé¨ååé
Request::param(['name', 'email']);
~~~
>[danger] `param`æ¹æ³ä¼æå½å请æ±ç±»åçåæ°åè·¯ç±åé以åGET请æ±å并ï¼å¹¶ä¸è·¯ç±åéæ¯ä¼å
çã
å
¶å®çè¾å
¥åéè·åæ¹æ³å`param`æ¹æ³ç¨æ³åºæ¬ä¸è´ã
ä½ æ æ³ä½¿ç¨**getæ¹æ³è·åè·¯ç±åé**ï¼ä¾å¦å½è®¿é®å°åæ¯
~~~
http://localhost/index.php/index/index/hello/name/thinkphp
~~~
ä¸é¢çç¨æ³æ¯é误ç
~~~
echo Request::get('name'); // è¾åºä¸ºç©º
~~~
æ£ç¡®çç¨æ³æ¯
~~~
echo Request::param('name'); // è¾åºthinkphp
~~~
>[danger] é¤äº`server`å`env`æ¹æ³çåéåä¸åºå大å°åï¼ä¼èªå¨è½¬ä¸ºå¤§ååè·åï¼ï¼å
¶å®åéååºå大å°åã
## é»è®¤å¼
è·åè¾å
¥åéçæ¶åï¼å¯ä»¥æ¯æé»è®¤å¼ï¼ä¾å¦å½URLä¸ä¸å
å«`$_GET['name']`çæ¶åï¼ä½¿ç¨ä¸é¢çæ¹å¼è¾åºçç»ææ¯è¾ã
~~~php
Request::get('name'); // è¿åå¼ä¸ºnull
Request::get('name',''); // è¿åå¼ä¸ºç©ºå符串
Request::get('name','default'); // è¿åå¼ä¸ºdefault
~~~
åé¢æå°çæ¹æ³é½æ¯æå¨ç¬¬äºä¸ªåæ°ä¸ä¼ å
¥é»è®¤å¼çæ¹å¼ã
## åéè¿æ»¤
>[danger] æ¡æ¶é»è®¤æ²¡æ设置任ä½å
¨å±è¿æ»¤è§åï¼ä½ å¯ä»¥å¨`app\Request`对象ä¸è®¾ç½®`filter`å
¨å±è¿æ»¤å±æ§ï¼
~~~
namespace app;
class Request extends \think\Request
{
protected $filter = ['htmlspecialchars'];
}
~~~
ä¹æ¯æ使ç¨`Request`对象è¿è¡å
¨å±åéçè·åè¿æ»¤ï¼è¿æ»¤æ¹å¼å
æ¬å½æ°ãæ¹æ³è¿æ»¤ï¼ä»¥åPHPå
ç½®çTypes of filtersï¼æ们å¯ä»¥è®¾ç½®å
¨å±åéè¿æ»¤æ¹æ³ï¼æ¯æ设置å¤ä¸ªè¿æ»¤æ¹æ³ï¼ä¾å¦ï¼
~~~
Request::filter(['strip_tags','htmlspecialchars']),
~~~
ä¹å¯ä»¥å¨è·ååéçæ¶åæ·»å è¿æ»¤æ¹æ³ï¼ä¾å¦ï¼
~~~
Request::get('name','','htmlspecialchars'); // è·ågetåé 并ç¨htmlspecialcharså½æ°è¿æ»¤
Request::param('username','','strip_tags'); // è·åparamåé 并ç¨strip_tagså½æ°è¿æ»¤
Request::post('name','','org\Filter::safeHtml'); // è·åpoståé 并ç¨org\Filterç±»çsafeHtmlæ¹æ³è¿æ»¤
~~~
å¯ä»¥æ¯æä¼ å
¥å¤ä¸ªè¿æ»¤è§åï¼ä¾å¦ï¼
~~~
Request::param('username','','strip_tags,strtolower'); // è·åparamåé 并ä¾æ¬¡è°ç¨strip_tagsãstrtolowerå½æ°è¿æ»¤
~~~
å¦æå½åä¸éè¦è¿è¡ä»»ä½è¿æ»¤çè¯ï¼å¯ä»¥ä½¿ç¨
~~~
// è·ågetåé 并ä¸ä¸è¿è¡ä»»ä½è¿æ»¤ å³ä½¿è®¾ç½®äºå
¨å±è¿æ»¤
Request::get('name', '', null);
~~~
>[danger] 对äºbodyä¸æ交ç`json`对象ï¼ä½ æ é使ç¨`php://input`å»è·åï¼å¯ä»¥ç´æ¥å½å表åæ交çæ°æ®ä½¿ç¨ï¼å 为系ç»å·²ç»èªå¨å¤çè¿äº
## è·åé¨ååé
å¦æä½ åªéè¦è·åå½å请æ±çé¨ååæ°ï¼å¯ä»¥ä½¿ç¨ï¼
~~~
// åªè·åå½å请æ±çidånameåé
Request::only(['id','name']);
~~~
>[danger] éç¨`only`æ¹æ³è½å¤å®å
¨çè·åä½ éè¦çåéï¼é¿å
é¢å¤åéå½±åæ°æ®å¤çååå
¥ã
`only`æ¹æ³å¯ä»¥æ¯ææ¹é设置é»è®¤å¼ï¼å¦ä¸ï¼
~~~
// 设置é»è®¤å¼
Request::only(['id'=>0,'name'=>'']);
~~~
表示`id`çé»è®¤å¼ä¸º0ï¼`name`çé»è®¤å¼ä¸ºç©ºå符串ã
é»è®¤è·åçæ¯å½å请æ±åæ°ï¼`PARAM`ç±»ååéï¼ï¼å¦æéè¦è·åå
¶å®ç±»åçåæ°ï¼å¯ä»¥å¨ç¬¬äºä¸ªåæ°ä¼ å
¥ï¼ä¾å¦ï¼
~~~
// åªè·åGET请æ±çidånameåé
Request::only(['id','name'], 'get');
// çæäº
Request::get(['id', 'name']);
// åªè·åPOST请æ±çidånameåé
Request::only(['id','name'], 'post');
// çæäº
Request::post(['id', 'name']);
~~~
ä¹æ¯ææé¤æäºåéåè·åï¼ä¾å¦
~~~
// æé¤idånameåé
Request::except(['id','name']);
~~~
åæ ·æ¯ææå®åéç±»åè·åï¼
~~~
// æé¤GET请æ±çidånameåé
Request::except(['id','name'], 'get');
// æé¤POST请æ±çidånameåé
Request::except(['id','name'], 'post');
~~~
## åé修饰符
æ¯æ对åé使ç¨ä¿®é¥°ç¬¦åè½ï¼å¯ä»¥ä¸å®ç¨åº¦ä¸ç®åè¿æ»¤åéï¼æ´ä¸ºä¸¥æ ¼çè¿æ»¤è¯·ä½¿ç¨åé¢æè¿çåéè¿æ»¤åè½ã
ç¨æ³å¦ä¸ï¼
>[info] ### Request::åéç±»å('åéå/修饰符');
æ¯æçåé修饰符ï¼å
æ¬ï¼
| 修饰符 | ä½ç¨ |
| --- | --- |
| s | 强å¶è½¬æ¢ä¸ºå符串类å |
| d | 强å¶è½¬æ¢ä¸ºæ´åç±»å |
| b | 强å¶è½¬æ¢ä¸ºå¸å°ç±»å |
| a | 强å¶è½¬æ¢ä¸ºæ°ç»ç±»å |
| f | 强å¶è½¬æ¢ä¸ºæµ®ç¹ç±»å |
ä¸é¢æ¯ä¸äºä¾åï¼
~~~
Request::get('id/d');
Request::post('name/s');
Request::post('ids/a');
~~~
## ä¸é´ä»¶åé
å¯ä»¥å¨ä¸é´ä»¶éé¢è®¾ç½®åè·å请æ±åéçå¼ï¼è¿ä¸ªå¼çæ¹åä¸ä¼å½±å`PARAM`åéçè·åã
~~~
<?php
namespace app\http\middleware;
class Check
{
public function handle($request, \Closure $next)
{
if ('think' == $request->name) {
$request->name = 'ThinkPHP';
}
return $next($request);
}
}
~~~
## å©æå½æ°
为äºç®å使ç¨ï¼è¿å¯ä»¥ä½¿ç¨ç³»ç»æä¾ç`input`å©æå½æ°å®æä¸è¿°å¤§é¨ååè½ã
å¤æåéæ¯å¦å®ä¹
~~~
input('?get.id');
input('?post.name');
~~~
è·åPARAMåæ°
~~~
input('param.name'); // è·åå个åæ°
input('param.'); // è·åå
¨é¨åæ°
// ä¸é¢æ¯çæç
input('name');
input('');
~~~
è·åGETåæ°
~~~
// è·åå个åé
input('get.id');
// 使ç¨è¿æ»¤æ¹æ³è·å é»è®¤ä¸ºç©ºå符串
input('get.name');
// è·åå
¨é¨åé
input('get.');
~~~
使ç¨è¿æ»¤æ¹æ³
~~~
input('get.name','','htmlspecialchars'); // è·ågetåé 并ç¨htmlspecialcharså½æ°è¿æ»¤
input('username','','strip_tags'); // è·åparamåé 并ç¨strip_tagså½æ°è¿æ»¤
input('post.name','','org\Filter::safeHtml'); // è·åpoståé 并ç¨org\Filterç±»çsafeHtmlæ¹æ³è¿æ»¤
~~~
使ç¨åé修饰符
~~~
input('get.id/d');
input('post.name/s');
input('post.ids/a');
~~~
- åºè¨
- åºç¡
- å®è£
- å¼åè§è
- ç®å½ç»æ
- é ç½®
- æ¶æ
- 请æ±æµç¨
- æ¶ææ»è§
- å ¥å£æ件
- å¤åºç¨æ¨¡å¼
- URL访é®
- 容å¨åä¾èµæ³¨å ¥
- æå¡
- é¨é¢
- ä¸é´ä»¶
- äºä»¶
- è·¯ç±
- è·¯ç±å®ä¹
- åéè§å
- è·¯ç±å°å
- è·¯ç±åæ°
- è·¯ç±ä¸é´ä»¶
- è·¯ç±åç»
- èµæºè·¯ç±
- 注解路ç±
- è·¯ç±ç»å®
- ååè·¯ç±
- MISSè·¯ç±
- è·¨å请æ±
- URLçæ
- æ§å¶å¨
- æ§å¶å¨å®ä¹
- åºç¡æ§å¶å¨
- 空æ§å¶å¨
- èµæºæ§å¶å¨
- æ§å¶å¨ä¸é´ä»¶
- 请æ±
- 请æ±å¯¹è±¡
- 请æ±ä¿¡æ¯
- è¾å ¥åé
- 请æ±ç±»å
- HTTP头信æ¯
- 伪éæ
- åæ°ç»å®
- 请æ±ç¼å
- ååº
- ååºè¾åº
- ååºåæ°
- éå®å
- æ件ä¸è½½
- æ°æ®åº
- è¿æ¥æ°æ®åº
- åå¸å¼æ°æ®åº
- æ¥è¯¢æé å¨
- æ¥è¯¢æ°æ®
- æ·»å æ°æ®
- æ´æ°æ°æ®
- å é¤æ°æ®
- æ¥è¯¢è¡¨è¾¾å¼
- é¾å¼æä½
- where
- table
- alias
- field
- strict
- limit
- page
- order
- group
- having
- join
- union
- distinct
- lock
- cache
- comment
- fetchSql
- force
- partition
- failException
- sequence
- replace
- extra
- duplicate
- procedure
- èåæ¥è¯¢
- å页æ¥è¯¢
- æ¶é´æ¥è¯¢
- é«çº§æ¥è¯¢
- è§å¾æ¥è¯¢
- JSONå段
- åæ¥è¯¢
- åçæ¥è¯¢
- æ¥è¯¢äºä»¶
- è·åå¨
- äºå¡æä½
- åå¨è¿ç¨
- æ°æ®é
- æ°æ®åºé©±å¨
- 模å
- å®ä¹
- 模åå段
- æ°å¢
- æ´æ°
- å é¤
- æ¥è¯¢
- æ¥è¯¢èå´
- JSONå段
- è·åå¨
- ä¿®æ¹å¨
- æç´¢å¨
- æ°æ®é
- èªå¨æ¶é´æ³
- åªè¯»å段
- 软å é¤
- ç±»å转æ¢
- 模åè¾åº
- 模åäºä»¶
- 模åå ³è
- ä¸å¯¹ä¸å ³è
- ä¸å¯¹å¤å ³è
- è¿ç¨ä¸å¯¹å¤
- è¿ç¨ä¸å¯¹ä¸
- å¤å¯¹å¤å ³è
- å¤æå ³è
- å ³èé¢è½½å ¥
- å ³èç»è®¡
- å ³èè¾åº
- è§å¾
- 模æ¿åé
- è§å¾è¿æ»¤
- 模æ¿æ¸²æ
- 模æ¿å¼æ
- è§å¾é©±å¨
- é误åæ¥å¿
- å¼å¸¸å¤ç
- æ¥å¿å¤ç
- è°è¯
- è°è¯æ¨¡å¼
- Traceè°è¯
- SQLè°è¯
- åéè°è¯
- è¿ç¨è°è¯
- éªè¯
- éªè¯å¨
- éªè¯è§å
- é误信æ¯
- éªè¯åºæ¯
- è·¯ç±éªè¯
- å ç½®è§å
- 表å令ç
- 注解éªè¯
- æ项
- ç¼å
- Session
- Cookie
- å¤è¯è¨
- ä¸ä¼
- å½ä»¤è¡
- å¯å¨å ç½®æå¡å¨
- æ¥ççæ¬
- èªå¨çæåºç¨ç®å½
- å建类åºæ件
- æ¸ é¤ç¼åæ件
- çææ°æ®è¡¨å段ç¼å
- çæè·¯ç±æ å°ç¼å
- è¾åºè·¯ç±å®ä¹
- èªå®ä¹æ令
- æ©å±åº
- æ°æ®åºè¿ç§»å·¥å ·
- Workerman
- thinkå©æå·¥å ·åº
- éªè¯ç
- Swoole
- éå½
- å©æå½æ°
- å级æ导
- æ´æ°æ¥å¿