yii get post请求参数获取

时间:2022-10-22 13:44:07

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