我正在开发多年前构建的应用程序,但最近无法正常工作。老程序员说,他可能访问 $_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/