yii get post請求參數獲取


yii默認提供獲取$_GET和$_POST值的方法,以及請求類型判斷,url地址參數信息獲取等.使用起來很方便,當然系統$_GET $_POST還是可以用,
注:不能相信任何用戶提交的任何參數值,以免出現安全問題, 如get參數id=5, 用戶訪問的時候id不一定等於5。

GET POST請求參數獲取
要獲取請求參數,可以調用 request 組件的 yii\web\Request::get() 方法和 yii\web\Request::post() 方法。這兩個方法分別返回 $_GET和 $_POST 的值。

Yii::$app->request->get();          // 即 $_GET;

Yii::$app->request->get('id');      //即 $id = isset($_GET['id']) ? $_GET['id'] : null;

Yii::$app->request->get('id', 1);   // 即 $id = isset($_GET['id']) ? $_GET['id'] : 1; 不存在值默認為1

Yii::$app->request->post();         // 即 $_POST;

Yii::$app->request->post('name');           // 即 $name = isset($_POST['name']) ? $_POST['name'] : null;

Yii::$app->request->post('name', 'aaa');   // 即 $name = isset($_POST['name']) ? $_POST['name'] : 'aaa';

建議像上面這樣通過 request 組件來獲取請求參數,而不是直接訪問 $_GET 和 $_POST。 這使更容易編寫測試實例,因為可以偽造數據來創建一個模擬請求組件。

請求方法
可以通過 Yii::$app->request->method 表達式獲取當前請求使用的HTTP方法,  yii2還提供了一套布爾屬性用於檢測當前請求是某種類型。 如:

if (Yii::$app->request->isAjax) { /* 該請求是一個 AJAX 請求 */ }
if (Yii::$app->request->isGet)  { /* 請求方法是 GET */ }
if (Yii::$app->request->isPost) { /* 請求方法是 POST */ }
if (Yii::$app->request->isPut)  { /* 請求方法是 PUT */ }

URL地址獲取

假設被請求URL是 http://example.com/admin/index.php/product?id=100

Yii::$app->request->url;
    //返回 /admin/index.php/product?id=100, 此URL不包括host info部分。

Yii::$app->request->absoluteUrl;
    //返回 http://example.com/admin/index.php/product?id=100, 包含host infode的整個URL。

Yii::$app->request->hostInfo;
    //返回 http://example.com, 只有host info部分。

Yii::$app->request->pathInfo;
    //返回 /product, 這個是入口腳本之后,問號之前(查詢字符串)的部分。

Yii::$app->request->queryString;
    //返回 id=100,問號之后的部分。

Yii::$app->request->baseUrl;
    //返回 /admin, host info之后, 入口腳本之前的部分。

Yii::$app->request->scriptUrl;
    //返回 /admin/index.php, 沒有path info和查詢字符串部分。

Yii::$app->request->serverName;
    //返回 example.com, URL中的host name。

Yii::$app->request->serverPort;
    //返回 80, 這是web服務中使用的端口。


 HTTP頭
可以通過 yii\web\Request::headers 屬性返回的 yii\web\HeaderCollection 獲取HTTP頭信息。 例如:

// $headers 是一個 yii\web\HeaderCollection 對象
$headers = Yii::$app->request->headers;

// 返回 Accept header 值
$accept = $headers->get('Accept');

if ($headers->has('User-Agent')) { /* 這是一個 User-Agent 頭 */ }

 

假如應用支持多語言,並且想在終端用戶最喜歡的語言中顯示頁面, 可以使用語言協商方法 yii\web\Request::getPreferredLanguage()。 這個方法通過 yii\web\Request::acceptableLanguages 在應用中所支持的語言列表里進行比較篩選,返回最適合的語言

轉轉地址:http://www.inpy.cn/news/151.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM