采用PHP函数import_request_variables实现变量导入到全局作用域

创造于:2010年05月11日07:53 档案在:PHP 浏览次数:219 作者:liuhui

PHP内置函数研究系列第一期,采用PHP函数import_request_variables()实现变量导入到全局作用域,主要讨论import_request_variables()函数的作用与用法。

import_request_variables() 函数应该不常用,其作用是将 GET/POST/Cookie 变量导入到全局作用域中,便于参数的调用,当然前提是不考虑一系列安全方面的因素,直接把变量导入到全局作用域是不鼓励的,但在开发的时候可能由于你禁止了register_globals,但又想用到一些全局变量,那么此函数就很有用。

一,函数原型
bool import_request_variables ( string types [, string prefix] )

二,版本兼容
PHP 4 >= 4.1.0, PHP 5

三,函数基础用法与实例
1,将GET变量导入到全局作用域
请求的URL路径:http:/www.liuhui.info/index.php?foo=liuhui
<?php
import_request_variables("g");
echo $foo;
?>
输出结果为:liuhui,传统的做法是使用$_GET['foo']输出

其中第一个参数types 可为大小写的字母‘G’、‘P’和‘C’,分别表示导入GET、POST 和 Cookie参数,上面实例是将GET参数导入到全局作用域。

2,将GET变量导入到全局作用域,并给每一个参数加上一个前缀
请求的URL路径:http:/www.liuhui.info/index.php?foo=liuhui
<?php
import_request_variables("g",'prefix_');
echo $prefix_foo;
?>
输出结果为:liuhui

注意,调用全局参数的变量为前缀+参数名,如上$prefix_foo;

3,同时将GET/POST变量导入到全局作用域

只需要更改一下 types参数,如:gp 或gP 其大小写不限,但要注意这些字母的顺序,当使用“gp”时,POST 变量将使用相同的名字覆盖 GET 变量。任何 GPC 以外的字母都将被忽略。

4,注意前缀参数prefix。虽然 prefix 参数是可选的,但如果不指定前缀,或者指定一个空字符串作为前缀,你将获得一个 E_NOTICE 级别的错误。使用默认错误报告级别是不显示注意(Notice)级别的错误的。

当然你可以考虑用$GLOBALS全局变量获取参数,但在使用上还是不如import_request_variables()函数导入全局作用域方便,更多用法请参考PHP手册。请关注下一期PHP内置函数研究系列。

评论和回复

liuhui 发表于 2010年05月17日09:29 @ http://www.liuhui.info

使用时要注意import_request_variables()变量覆盖漏洞
发表一下看法
注册一下,轻松回复,请放心,邮箱严格保密,便于更好沟通
用户名*
邮箱*
个人主页 (带http://)
内容
验证码