我知道使用$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");
是的,你猜对了,项目的每个方面都有一个这样的函数,只是每次都有不同的名称!
你的问题:
使用 $GLOBALS['HTTP_GET_VARS'] 是否已弃用?
Answer:
是的。
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
数组进入全局范围。这是自动完成的功能reallyPHP 的旧版本,但由于它会导致严重的安全问题而被放弃。我强烈建议删除整段代码并将所有代码转换为使用$_GET
反而。你可能想要谷歌搜索register_globals了解更多关于为什么这是一件坏事的信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)