这里还有一个奇怪的问题。我最近参与了从 PHP 5 到 Php 7.1 的大规模升级以及 CentOS 升级。
我们有很多页面(实际上几乎所有页面)在代码中使用了注册全局快捷方式。
$_SESSION['username'] = $data['username'];
$_SESSION['password'] = $data['password'];
$_SESSION['accountid'] = $data['accountid'];
$_SESSION['role'] = $data['role'];
$getCompany = mysqli_query($mysqli_con,"SELECT * FROM companies WHERE companyid='$data[accountid]'");
$dataCompany = mysqli_fetch_array($getCompany);
$delinquent = $dataCompany['delinquency'];
// Here I fixed it
$item = $_GET['item'];
// But generally variables are just referenced by $whatevergetparameter
if($delinquent == 0){
switch($item)
{
// Settings
case "cannedresponses":
include("/master/inc/settings/list-cannedresponse.inc");
break;
case "serviceboard":
include("/master/inc/settings/list-serviceboard.inc");
break;
case "pending-direct":
include("/master/inc/direct/pending.inc");
break;
这自然引起了很多问题。特别是因为它无处不在。
有计划进行重写,但与此同时,我想知道是否有人知道模仿或“启用”register_globals 的解决方法,以便我们可以启动并运行功能。
我查看并尝试了以下解决方案: http://php.net/manual/en/security.globals.php 但不幸的是,它们不起作用,这并不奇怪,因为它们是 3 年前编写的。
我的 Google-Fu 也没有帮助我:/
感谢任何帮助,提前致谢!
最佳答案
您可以从 GPC 创建自己的全局变量:
foreach (['_GET', '_POST', '_COOKIE'] as $source) {
foreach ($$source as $key => $value) {
$GLOBALS[$key] = $value;
}
}
免责声明:永远不要真正这样做。
关于PHP 7.1 注册全局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43074300/