<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                可以通過`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 變量 | | all `V6.0.8+` | 獲取包括 $\_FILES 變量在內的請求變量,相當于param+file | ### 獲取`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'); ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看