就爱编程论坛
标题:
php全局变量禁用(register_globals)的变通办法
[打印本页]
作者:
admin
时间:
2011-7-20 12:55:09
标题:
php全局变量禁用(register_globals)的变通办法
为了程序安全,一般虚拟主机都关闭了register_globals(自动全局变量),而我们写程序大多都有习惯不写$_GET、$_POST,那么碰上一些关闭自动全局变量的虚拟主机时怎么办呢?不想重新去加$_GET、$_POST的可以用import_request_variables这个函数来实现.使用方法是将这个函数放到一个公用的包含函数里面或者在每个程序前面使用。
[attach]801[/attach] register_globals(自动全局变量)
bool
import_request_variables
( string
$types
[, string
$prefix
] )
将 GET/POST/Cookie 变量导入到全局作用域中。如果虚拟主机禁止register_globals,但又想用到一些全局变量,那么此函数就很有用。
你可以使用 types 参数指定需要导入的变量。可以用字母‘G’、‘P’和‘C’分别表示 GET、POST 和 Cookie。这些字母不区分大小写,所以你可以使用‘g’、‘p’和‘c’的任何组合。POST 包含了通过 POST 方法上传的文件信息。注意这些字母的顺序,当使用“gp”时,POST 变量将使用相同的名字覆盖 GET 变量。任何 GPC 以外的字母都将被忽略。
prefix 参数作为变量名的前缀,置于所有被导入到全局作用域的变量之前。所以如果你有个名为“userid”的 GET 变量,同时提供了“pref_”作为前缀,那么你将获得一个名为 $pref_userid 的全局变量。
如果你对导入其它全局变量(例如 SERVER 变量)感兴趣,请考虑使用
extract()
。
注:
虽然 prefix 参数是可选的,但如果不指定前缀,或者指定一个空字符串作为前缀,你将获得一个 E_NOTICE 级别的错误。使用默认错误报告级别是不显示注意(Notice)级别的错误的。
<?php
// 此处将导入 GET 和 POST 变量
// 使用“yl_”作为前缀
import_request_variables
(
"gP"
,
"yl_"
)
;
print
$yl_foo
;
?>
欢迎光临 就爱编程论坛 (http://bbs.waibc.com/)
Powered by Discuz! X2