获取系统变量

ThinkPHP没有改变原生的PHP系统变量获取方式,所以依然可以通过$_GET、 $ _POST、$_SERVER、$_REQUEST 等方式来获取系统变量,不过系统的Action类提供了对系统变量的增强获取方法,包括对GET、POST、PUT、REQUEST、SESSION、COOKIE、SERVER和GLOBALS参数,除了获取变量值外,还提供变量过滤和默认值支持,用法很简单,只需要在Action中调用下面方法:
  1. $this->方法名("变量名",["过滤方法"],["默认值"])
方法名可以支持:
方法名含义
_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 参数配置),参数就是前面方法名获取到的值,也就是说如果调用:
  1. $this->_get("name");
最终调用的结果就是 htmlspecialchars($_GET["name"]),如果要改变过滤方法,可以使用:
  1. $this->_get("name","strip_tags");
默认值:(可选)是要获取的参数变量不存在的情况下设置的默认值,例如:
  1. $this->_get("id","strip_tags",0);
如果$_GET["id"] 不存在的话,会返回0。

如果没有设置任何默认值的话,系统默认返回NULL。


其他方法的用法类似。也可以支持多函数过滤。
例如,可以设置:
  1. 'DEFAULT_FILTER'=>'htmlspecialchars,strip_tags'
那么在控制器类如果调用
  1. $this->_get('id');
的话,会依次对$_GET['id'] 变量进行htmlspecialchars和strip_tags方法过滤后返回结果。
下面调用方式也同样支持:
  1. $this->_get('id','htmlspecialchars,strip_tags',0);
其他变量获取方法用法相同。
支持获取全部变量,例如:
  1. $this->_get();
表示获取$_GET变量值。

支持不过滤处理

如果不希望过滤某个参数,可以使用
  1. $this->_get('id',false);
  2. $this->_post('id',false);
  3. //或者
  4. $this->_get('id','');
  5. $this->_post('id','');
第二个参数使用false或者空字符串则表示不作任何过滤处理,即使我们有配置默认的过滤方法。
如果我们忽略第二个参数调用的话
  1. $this->_get('id');
  2. $this->_post('id');
则表示调用默认的过滤方法(由DEFAULT_FILTER参数进行配置)。3.1版本开始,Action类增加_param方法,可以自动根据当前请求类型(例如GET POST)获取参数。
例如:
  1. $this->_param('id');
当前为get方式提交的时候,就是获取$_GET['id'](进行默认过滤后)的值
当前为post方式提交的时候,就是获取$ _POST['id'](进行默认过滤后)的值

还可以用_param方法获取URL中的参数
  1. $this->_param(0); // 获取PATHINFO地址中的第一个参数
  2. $this->_param(2); // 获取PATHINFO地址中的第3个参数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值