我正在开发多年前构建的应用程序,但最近无法正常工作。老程序员说,他可能访问 $_GET$_POST 变量,而不是从 $_GET[] array 读取它们,而是通过 register_globals
我想问:在不使用 $_GET 数组的情况下访问 $_GET[] 变量有哪些不同的方法(例如直接方法?),如果知道,我如何检查此应用程序是否使用了其中的任何一个?

先感谢您

编辑 :我记得的其他方式是 register_globals ,而不是 magic_quotes 。另外,我不希望 使用它 ,而是检测它是否被使用并且在最新的服务器更新中被弃用(什么可以解释为什么应用程序停止正常工作)

编辑 :我今天的英语很糟糕。正如我在其中一个答案中所解释的: 我需要检查一下,原始程序员是否使用了一些晦涩和/或不推荐使用的方法将变量从查询字符串获取到 PHP,因此应用程序现在使用的值是错误的/未初始化的

重要编辑 :import_request_variables 不在表中,它没有被使用。所有 $_ 数组也不在表中,因为最新的更新不会破坏它们(=>它们仍然有效)。如何检测使用 register_globals 初始化的变量?

另一个编辑 :我发现了这个:

foreach ($_POST as $k => $v) {
  eval("\$".$k." = '".$v."';");
}
foreach ($_GET as $k => $v) {
  eval("\$".$k." = '".$v."';");
}

它是否已被最新更新之一破坏(最多 1 周前)?

最佳答案

你的意思是通过 Register Globals 而不是 Magic Quotes ... BTW Register Globals 是纯粹的邪恶 从不 使用它们(并且它们从 PHP 5.3.0 开始被弃用)!

编辑: 如果要检查应用程序是否使用了注册全局变量,请尝试搜索 $_GET 值作为变量。例如对于 index.php?id=123 尝试在 PHP 代码中查找 $id。如果您发现它,这并不意味着该脚本使用了注册全局变量,但如果 $id 来自无处可寻并且从未初始化/设置,那么这是应用程序使用注册全局变量的好(坏!)迹象...

关于php - 如何在 PHP 中获取 $_GET 变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4155156/

10-14 15:08
查看更多