如何在 XAMPP PHP7.4 服务器中复制 magic_quotes 功能?

How can I replicate magic_quotes functionality in a XAMPP PHP7.4 server?

首先,我明白magic_quotes会导致各种问题,在现代PHP中没有立足之地。我处于一个非常特殊的情况,我已经将 XAMPP 从 PHP 5 升级到 PHP 7.4,用于包含 5000 多个文件的内部网站。突然间,当用户生成的字符串中包含单引号或双引号时,各种 SQL INSERT 查询都会中断。使用 add_slashes 函数遍历并包装这 5000 个文件中的每个变量绝对是不可行的,因此我需要想出一些方法来全局应用与 magic_quotes 相同的逻辑。有什么建议吗?

您确实需要更新此应用程序 How can I prevent SQL injection in PHP?. However, I am pretty sure that's not going to happen. So, in a header file or one that is included before any database operation (auto_prepend_file 也许),只需将超全局变量映射到 addslashes。如果需要,您可以添加 $_COOKIE

$_POST = array_map('addslashes', $_POST);
$_GET  = array_map('addslashes', $_GET);

显然这不会处理多维数组,因此您必须使用递归函数:

function addslashes_recursive($v) {
    $v = is_array($v) ? array_map('addslashes_recursive', $v) : addslashes($v);    
    return $v;
}

$_POST = addslashes_recursive($_POST);
$_GET  = addslashes_recursive($_GET);