多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 获取系统变量 [上一页](47.html "上一页")[下一页](49.html "下一页") ThinkPHP没有改变原生的PHP系统变量获取方式,所以依然可以通过$_GET、 $_POST、$_SERVER、$_REQUEST 等方式来获取系统变量,不过系统的Action类提供了对系统变量的增强获取方法,包括对GET、POST、PUT、REQUEST、SESSION、COOKIE、SERVER和GLOBALS参数,除了获取变量值外,还提供变量过滤和默认值支持,用法很简单,只需要在Action中调用下面方法:`$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 参数配置),参数就是前面方法名获取到的值,也就是说如果调用:`$this->_get("name");`最终调用的结果就是 htmlspecialchars($_GET["name"]),如果要改变过滤方法,可以使用:`$this->_get("name","strip_tags");`**默认值**:(可选)是要获取的参数变量不存在的情况下设置的默认值,例如:`$this->_get("id","strip_tags",0);`如果$_GET["id"] 不存在的话,会返回0。 如果没有设置任何默认值的话,系统默认返回NULL。 其他方法的用法类似。也可以支持多函数过滤。 例如,可以设置:` 'DEFAULT_FILTER'=>'htmlspecialchars,strip_tags'`那么在控制器类如果调用 `$this->_get('id');` 的话,会依次对$_GET['id'] 变量进行htmlspecialchars和strip_tags方法过滤后返回结果。 下面调用方式也同样支持:`$this->_get('id','htmlspecialchars,strip_tags',0);`其他变量获取方法用法相同。 支持获取全部变量,例如:`$this->_get();`表示获取$_GET变量值。### 支持不过滤处理 如果不希望过滤某个参数,可以使用`$this->_get('id',false);<br class="calibre5"></br>$this->_post('id',false);<br class="calibre5"></br>//或者<br class="calibre5"></br>$this->_get('id','');<br class="calibre5"></br>$this->_post('id','');`第二个参数使用false或者空字符串则表示不作任何过滤处理,即使我们有配置默认的过滤方法。 如果我们忽略第二个参数调用的话`$this->_get('id');<br class="calibre5"></br>$this->_post('id');`则表示调用默认的过滤方法(由DEFAULT_FILTER参数进行配置)。3.1版本开始,Action类增加_param方法,可以自动根据当前请求类型(例如GET POST)获取参数。 例如:`$this->_param('id');`当前为get方式提交的时候,就是获取$_GET['id'](进行默认过滤后)的值 当前为post方式提交的时候,就是获取$_POST['id'](进行默认过滤后)的值 还可以用_param方法获取URL中的参数`$this->_param(0); // 获取PATHINFO地址中的第一个参数<br class="calibre5"></br>$this->_param(2); // 获取PATHINFO地址中的第3个参数` [上一页](47.html "上一页")[下一页](49.html "下一页")