Tre*_*non 3 php global deprecated
我知道使用的$HTTP_GET_VARS
是弃用但是使用$GLOBALS['HTTP_GET_VARS']
呢?该阵列密钥将来可能会消失吗?
我基本上有一个遗留项目,我需要与CMS集成,除非绝对必要,否则我真的不想更新它.
function table_manager_import_vars($var) {
$vars = explode(",", $var);
foreach($vars AS $var) {
switch ($var) {
case "G":
$var = "HTTP_GET_VARS";
break;
case "P":
$var = "HTTP_POST_VARS";
break;
case "C":
$var = "HTTP_COOKIE_VARS";
break;
case "S":
$var = "HTTP_SESSION_VARS";
//session_start();
break;
case "E":
$var = "HTTP_SERVER_VARS";
break;
}
if (isset($GLOBALS[$var])) {
if (is_array($GLOBALS[$var])) {
foreach($GLOBALS[$var] AS $var1 => $value) {
if ($var1 != $var) {
$GLOBALS[$var1] = $value;
}
}
}
}
}
}
// called like this
table_manager_import_vars("G,P,C,S,E");
Run Code Online (Sandbox Code Playgroud)
是的,你猜对于项目的每个方面都有这样的功能,每次都有不同的名字!!
Spu*_*ley 11
你的问题:
是否弃用了$ GLOBALS ['HTTP_GET_VARS']?
回答:
是的.
http://www.php.net/manual/en/reserved.variables.get.php
此页面明确指出$HTTP_GET_VARS
已弃用,您应该使用$_GET
.
$HTTP_GET_VARS
是一样的$GLOBALS['HTTP_GET_VARS']
.因此,它也被弃用了.(请注意,可以使用全局范围定义的所有变量$GLOBALS['variablename']
)
顺便说一下:当谈到使用遗留代码时$HTTP_GET_VARS
,我知道你说如果可以避免使用代码就要避免更改代码,但值得指出的是,这个时代的代码在运行时可能会遇到大问题在现代PHP安装中,因为旧版本的PHP会假设magic_quotes
正在使用.如果您在较新版本的PHP中运行相同的代码magic_quotes
,那么您应该确保数据已正确转义.
看看你在那里得到的整个代码,看起来它正试图将各种HTTP_***_VARS
数组中的所有变量复制到globlal范围中.这是在真正旧版本的PHP中自动完成的功能,但由于它导致了大量安全问题而被删除.我认真地建议丢弃整个代码并将每个代码转换为使用$_GET
.你可能想谷歌获取register_globals
更多关于为什么这是一件坏事的信息.
$HTTP_GET_VARS
并且$GLOBALS['HTTP_GET_VARS']
是一回事.$HTTP_GET_VARS
是一个超全局和超全局变量可以(但不必须要)通过访问$GLOBALS
.
此外,该代码是一个巨大的安全漏洞.
归档时间: |
|
查看次数: |
11253 次 |
最近记录: |