php $http_get_vars,php – 使用$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");

是的,你猜对于项目的每个方面都有这样的功能,每次都有不同的名字!!

解决方法:

你的问题:

Is using $GLOBALS[‘HTTP_GET_VARS’] deprecated?

回答:

是的.

此页面明确指出$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代替.您可能希望google for register_globals获取有关为何这是一件坏事的更多信息.

标签:php,deprecated,global

来源: https://codeday.me/bug/20191006/1863131.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值