## 请求组件 Request服务是用于获取请求数据与对请求终端设备进行判断的服务。 其他产品也可以使用该组件,请登录 [GITHUB](https://github.com/houdunwang/request) 查看源代码与说明文档。 [TOC] ## 常用常量 组件会定义一些常量 | 常量 | 说明 | | --- | --- | | IS_GET | GET请求 | | IS_POST | POST请求 | | IS_DELETE | DELETE请求 | | IS_PUT | PUT请求 | | IS_AJAX | 异步请求 | | IS_WECHAT | 微信客户端请求 | | \_\_ROOT\_\_ | 不包含入口文件的网址 | | \_\_URL\_\_ | 当前请求完整URL,开启伪静态时和__ROOT__一样的 | | \_\_HISTORY\_\_ | 来源地址 | ## 请求类型判断 #### 函数判断请求类型 判断类型支持 get/post/delete/put/ajax/mobile 类型的判断 ``` Request::isMethod('post'); ``` #### 判断是否为Ajax请求 判断类型支持 get/post/delete/put/ajax/mobile 类型的判断 ``` Request::isAjax(); ``` #### 判断是否为手机访问 ``` Request::isMobile(); ``` #### 检测是否为微信客户端 ``` Request::isWeChat(); ``` ## https请求检测 ``` Request::isHttps(); ``` ## 判断请求来源是否为本站域名 ``` Request::isDomain(); ``` ## 当前请求地址 ``` Request::uri(); //或使用函数 request_url(); ``` ## 获取主机名 ``` Request::getHost($_SERVER['HTTP_REFERER']); ``` ## 网站域名 ``` Request::domain(); //或使用函数 domain_url(); //或 root_url(); ``` ## 有入口文件的链接 根据伪静态配置 Config::get('http.rewrite') , 添加带有入口文件的链接 ``` Request::web(); //或使用函数 web_url(); //必须包含入口文件 web_url(true); ``` ## 来源地址 ``` Request::history(); //或使用函数 history_url(); ``` ## 获取请求头信息 ``` getallheaders(); ``` ## 获取请求类型 ``` Request::getRequestType(); #返回值为 GET/POST/DELETE/PUT 之一 ``` ## 获取数据 query 方法支持点语法操作,支持多层数据获取。第一个字符为数据类型。 ``` Request::query('post.data.id'); ``` ## 不存在时返回默认值 返回默认值指当数据不存在时返回设置的值,并不会更改原数据。 以下示例当 $_GET['id']不存在时返回默认值9 ``` Request::query('get.id',9); ``` ## 对数据函数处理 query 方法的第三个参数是一个函数名组成的数组,将对获取的数据通过函数进行处理后返回。 ``` Request::query('get.id',0,['intval','trim']); ``` ## 根据类型获取 系统支持使用 get,post,request,server,session,cookie,global获取同名的php全局变量数据。 #### 获得所有 $_GET 数据 ``` Request::get('cid',0,'intval'); //获取$_GET['cid']值 ,存在时使用intval函数处理,不存在时定义为0 ``` #### 获得所有 $_POST 数据 ``` Request::post(); ``` #### 获得POST变量并对数据执行函数处理 ``` Request::post('webname',NULL,['htmlspecialchars','strtoupper']); ``` #### 获得POST变量, 不存时返回默认值 ``` Request::post('webname','后盾网'); ``` #### 获得 $_SESSION['uid'] 值,并执行intval方法 ``` Request::session('uid',0,'intval'); ``` #### 获得 $_COOKIE['cart'] 值 ``` Request::cookie('cart'); ``` ## q 函数 q函数是 [Request 组件](http://www.kancloud.cn/houdunwang/hdphp3/215229) 的函数调用方式,下面通过实例讲解他的使用方法。 #### 获取$_REQUEST ``` q('cid'); ``` #### 参数不存在时设置默认值 ``` q('cid',1); ``` #### 对变量值应用函数 ``` q('cid',1,'intval'); ``` #### 执行多个函数 ``` q('webname','houdunwang',['ucfirst','strtoupper']); ``` ## 设置请求数据 使用set 方法可以为$_GET,$_POST,$_REQUEST,$_SERVER设置数据,支持点语法设置多层数据,第一个参数为数据类型。 以下代码设置GET['a']['b'] 变量为后盾人 ``` Request::set('get.a.b','后盾人'); ``` ## 获取客户端IP地址 ``` Request::ip(); //或使用函数获取 clientIp(); ``` ## 操作$_GET参数并转为字符串 当前$_GET生成的查询参数,如果当前$_GET中包含cid=1和name=hdphp以上代码结果为 ~~~ Request::getToStr(); //cid=1&name=hdphp ~~~ 以下代码在现在$_GET参数中添加值并转为字符串,如果当前$_GET中包含cid=1以上代码生成结果为 ~~~ Request::getToStr('name','hdphp'); //cid=1&name=hdphp ~~~ 删除一个参数,如果当前$_GET中包含cid=1和name=hdphp以上代码结果为 ~~~ Request::getToStr('cid'); //name=hdphp ~~~