php 超全局变量 数组,超全局变量获取

> ## 检测变量是否被设置

```

方法一:

Request::instance()->has('id','get');

Request::instance()->has('name','post');

方法二:

input('?get.id');

input('?post.name');

```

> ## 获取超全局变量的值

> ### 变量类型方法('变量名/变量修饰符','默认值','过滤方法')

|方法|描述|

|---|---|

|param|获取当前请求的变量|

|get|获取 $_GET 变量|

|post|获取 $_POST 变量|

|put|获取 PUT 变量|

|delete|获取 DELETE 变量|

|session|获取 $_SESSION 变量|

|cookie|获取 $_COOKIE 变量|

|request|获取 $_REQUEST 变量|

|server|获取 $_SERVER 变量|

|env|获取 $_ENV 变量|

|route|获取 路由(包括PATHINFO) 变量|

|file|获取 $_FILES 变量|

```

第一种获取方法:

// 获取单个变量(其他方法一样)

Request::instance()->param('name');

// 获取所有变量(经过过滤)(其他方法一样)

Request::instance()->param();

// 获取所有变量(原始数据)(其他方法一样)

Request::instance()->param(false);

// 获取所有变量(包含上传文件)

Request::instance()->param(true);

第二种获取方法:

// 获取单个变量(其他方法一样)

input('param.name');

// 获取所有变量(其他方法一样)

input('param.');

或者 // 因为input默认就是采用的param方式获取,所以可以这样简写

input('name');

input('');

```

>## 对请求变量进行过滤与设置不过滤(不要相信任何用户传递过来的数据)

```

第一种方式:在框架配置文件中添加默认过滤规则

// 默认全局过滤方法 用逗号分隔多个

'default_filter' => 'htmlspecialchars',

第二种方式:使用Request对象进行过滤

// 使用PHP内置的方法

Request::instance()->filter('htmlspecialchars'); // 过滤请求对象

Request::instance()->filter(['strip_tags','htmlspecialchars']), // 数组传入多个过滤方法

Request::instance()->param('username','','strip_tags,strtolower'); // 获取param变量 并依次调用strip_tags、strtolower函数过滤

Request::instance()->get('name','','htmlspecialchars'); // 获取get变量 并用htmlspecialchars函数过滤

Request::instance()->post('name','','org\Filter::safeHtml'); // 获取post变量 并用org\Filter类的safeHtml方法过滤

// 使用PHP内置的Filter ID进行过滤(该方式如果不符合会返回false,所以需要和默认值配合使用)

Request::instance()->post('email','',FILTER_VALIDATE_EMAIL);

还可以简写

Request::instance()->post('email','','email');

// 对变量不进行过滤,直接获得原始数据

Request::instance()->get('name','',null); // 获取get变量 并且不进行任何过滤 即使设置了全局过滤

```

> ## 获取请求的部分变量

```

// 只获取id和name变量

Request::instance()->only('id,name');

Request::instance()->only(['id','name']);

// 只获取GET请求的id和name变量

Request::instance()->only(['id','name'],'get');

// 只获取POST请求的id和name变量

Request::instance()->only(['id','name'],'post');

```

> ## 排除请求的部分变量

```

// 排除id和name变量

Request::instance()->except('id,name');

Request::instance()->except(['id','name']);

// 排除GET请求的id和name变量

Request::instance()->except(['id','name'],'get');

// 排除POST请求的id和name变量

Request::instance()->except(['id','name'],'post');

```

>## 变量修饰符(如果不加默认为/s,如果获取的变量是数组一定要加/a才能正确获取)

>### input('变量类型.变量名/修饰符');

>### Request::instance()->变量类型('变量名/修饰符');

```

input('get.id/d');

Request::instance()->get('id/d');

```

|修饰符|作用|

|---|---|

|s|强制转换为字符串类型|

|d|强制转换为整型类型|

|b|强制转换为布尔类型|

|a|强制转换为数组类型|

|f|强制转换为浮点类型|

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值