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