## 请求组件
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
~~~
- 文档已经迁移到后盾人
- 介绍
- 框架特性
- 开发规范
- 许可协议
- 作者向军
- 安装框架
- 更新框架
- 基础
- 入口文件
- 应用配置
- 优雅链接
- 目录结构
- 系统常量
- 自动加载
- 应用密钥
- 系统函数
- CSRF保护
- 依赖注入
- 跨域访问
- 配置
- 配置文件
- 基本功能
- 扩展配置
- c 函数
- 控制器
- 定义声明
- 基本使用
- 相关函数
- 响应消息
- 路由
- 基础知识
- 基础路由
- 路由参数
- 参数检测
- 依赖注入
- 控制器
- 分组路由
- RESTful
- 别名路由
- 数据
- 配置相关
- 核心操作
- 查询构造器
- 日志记录
- 分页处理
- 事务处理
- 函数相关
- 数据库
- 数据迁移
- 数据填充
- 模型
- 定义模型
- 模型动作
- 模型验证
- 自动完成
- 自动过滤
- 字段保护
- 数据填充
- 多表关联
- 分页处理
- 仓库
- 数据仓库
- 查询规则
- 视图
- 基础知识
- 模板配置
- 模板文件
- 分配数据
- 系统标签
- 扩展标签
- 缓存模板
- 模板继承
- 视图函数
- widget
- vue组件
- 中间件
- 中间件
- 缓存
- 基本操作
- 文件缓存
- 数据表缓存
- 服务
- 服务容器
- 定制服务
- 相关函数
- 请求
- 基本使用
- 请求扩展
- 测试
- 基础知识
- 基本使用
- HTTP测试
- 调试
- 调试模式
- 日志管理
- 组件
- 多语言
- 响应处理
- Cookie
- Session
- 验证码
- XML
- 自动验证
- 文件处理
- 压缩解压
- RBAC
- 数组增强
- 分页管理
- 图像处理
- 生成静态
- 加密解密
- 字符串
- 数据集合
- 工具服务
- 目录操作
- 邮件发送
- CURL
- QQ登录
- 数据备份
- 购物车
- 日志处理
- 命令组件
- 二维码
- 后盾云
- 日期处理
- 阿里
- 支付宝
- 阿里云直播
- 阿里云短信
- 阿里云邮件
- 阿里云OSS
- SOCKET
- 启动与关闭
- 前端
- 微信