5.16 获取系统变量
匿名 · 更新于 2013/12/24
ThinkPHP没有改变原生的PHP系统变量获取方式,所以依然可以通过$_GET、 $_POST、$_SERVER、$_REQUEST 等方式来获取系统变量,不过系统的Action类提供了对系统变量的增强获取方法,包括对GET、POST、PUT、REQUEST、SESSION、COOKIE、SERVER和GLOBALS参数,除了获取变量值外,还提供变量过滤和默认值支持,用法很简单,只需要在Action中调用下面方法:
$this->方法名("变量名",["过滤方法"],["默认值"])
1
方法名可以支持:
变量名:(必须)是要获取的系统变量的名称
过滤方法:(可选)可以用任何的内置函数或者自定义函数名,如果没有指定的话,采用默认的htmlspecialchars函数进行安全过滤(由DEFAULT_FILTER 参数配置),参数就是前面方法名获取到的值,也就是说如果调用:
其他方法的用法类似。
| 方法名 | 含义 |
|---|---|
| _get | 获取GET参数 |
| _post | 获取POST参数 |
| _param | 自动判断请求类型获取GET、POST或者PUT参数(3.1新增) |
| _request | 获取REQUEST 参数 |
| _put | 获取PUT 参数 |
| _session | 获取 $_SESSION 参数 |
| _cookie | 获取 $_COOKIE 参数 |
| _server | 获取 $_SERVER 参数 |
| _globals | 获取 $GLOBALS参数 |
过滤方法:(可选)可以用任何的内置函数或者自定义函数名,如果没有指定的话,采用默认的htmlspecialchars函数进行安全过滤(由DEFAULT_FILTER 参数配置),参数就是前面方法名获取到的值,也就是说如果调用:
$this->_get("name");
$this->_get("name","strip_tags");
$this->_get("id","strip_tags",0);
如果没有设置任何默认值的话,系统默认返回NULL。
其他方法的用法类似。
3
也可以支持多函数过滤。
例如,可以设置:
下面调用方式也同样支持:
支持获取全部变量,例如:
如果我们忽略第二个参数调用的话
例如,可以设置:
'DEFAULT_FILTER'=>'htmlspecialchars,strip_tags'
$this->_get('id');
下面调用方式也同样支持:
$this->_get('id','htmlspecialchars,strip_tags',0);
支持获取全部变量,例如:
$this->_get();
支持不过滤处理
如果不希望过滤某个参数,可以使用$this->_get('id',false);$this->_post('id',false);//或者$this->_get('id','');$this->_post('id','');
如果我们忽略第二个参数调用的话
$this->_get('id');$this->_post('id');
2
3.1版本开始,Action类增加_param方法,可以自动根据当前请求类型(例如GET POST)获取参数。
例如:
当前为post方式提交的时候,就是获取$_POST['id'](进行默认过滤后)的值
还可以用_param方法获取URL中的参数
例如:
$this->_param('id');
当前为post方式提交的时候,就是获取$_POST['id'](进行默认过滤后)的值
还可以用_param方法获取URL中的参数
$this->_param(0); // 获取PATHINFO地址中的第一个参数$this->_param(2); // 获取PATHINFO地址中的第3个参数
