我继承了一个需要在PHP5服务器上运行的php4站点,我已经解决了大部分问题,但不知道作者在这里试图做什么。确切地说,他试图引用提交的文本,但我不确定这个函数应该如何工作,我应该如何在PHP5中完成它?
# Function to safely add slashes when magic quotes is switched off
function safe_slash($string)
{
if (!get_magic_quotes_gpc())
{
$string = addslashes($string);
}
return $string;
}
默认情况下,PHP4在PHP.ini中打开了一个名为magic_quotes_gpc
的选项,它将addslashes
分配给所有$_POST/$_GET
变量。
该代码只是检查值magic_quotes_gpc是否关闭,如果关闭,它将在传入的$字符串中添加斜杠。
它应该在PHP4和PHP5中工作(我相信在PHP6中magic_quotes_gpc将被删除)。不过,不建议依赖它,它最初是为了"保护"SQL注入,但已被发现不足。
$_POST = self::addSlashesRecursive($_POST);
$_GET = self::addSlashesRecursive($_GET);
$_COOKIE = self::addSlashesRecursive($_COOKIE);
function addSlashesRecursive($s)
{
if (get_magic_quotes_gpc()) {
return $s;
}
if (is_string($s)) {
return addslashes($s);
} else if (is_array($s)) {
return array_map(array('addSlashesRecursive'), $s);
}
return $s;
}
但在我看来,更改代码会更好。在PHP6中,magic_quotes将被完全删除。