如您所知,当Magic Quotes为ON时,单引号会在值和键中转义.大多数在运行时删除Magic Quotes的解决方案只能取消值,而不是键.我正在寻找一种能够解决关键和价值观的解决方案……
$process = array(&$_GET,&$_POST,&$_COOKIE,&$_REQUEST); while (list($key,$val) = each($process)) { foreach ($val as $k => $v) { unset($process[$key][$k]); if (is_array($v)) { $process[$key][stripslashes($k)] = $v; $process[] = &$process[$key][stripslashes($k)]; } else { $process[$key][stripslashes($k)] = stripslashes($v); } } } unset($process);
但我不喜欢“&”引用和数组,因为我过去有像this one这样的bug …
是否有一种“更好”的方式来在运行时使用魔术引号(键和值)而不是上面的方法?
我认为这是一个更清洁,避免参考错误:
function unMagicQuotify($ar) { $fixed = array(); foreach ($ar as $key=>$val) { if (is_array($val)) { $fixed[stripslashes($key)] = unMagicQuotify($val); } else { $fixed[stripslashes($key)] = stripslashes($val); } } return $fixed; } $process = array($_GET,$_POST,$_COOKIE,$_REQUEST); $fixed = array(); foreach ($process as $index=>$glob) { $fixed[$index] = unMagicQuotify($glob); } list($_GET,$_REQUEST) = $fixed;