什么是这个功能,利用stripslashes(),实际上做什么?

时间:2014-07-02 15:22:03

标签: php oop

我正在尝试通过this tutorial使用mysqli_*扩展程序来学习面向对象的PHP。

它似乎有点过时,因为它们在连接文件中有一个已从PHP中删除的get_magic_quotes_gpc()的引用,对吗?

页面上有一个函数如下:

if (get_magic_quotes_gpc()) {
    function sanitize($value) {
        $value = is_array($value) ?
        array_map('sanitize', $value) :
        stripslashes($value);
        return $value;
    }
    $_POST = array_map('sanitize', $_POST);
    $_GET = array_map('sanitize', $_POST);
    $_COOKIE = array_map('sanitize', $_COOKIE);
    $_REQUEST = array_map('sanitize', $_REQUEST);
}

现在,如果我取出了初始if语句的代码,1)是否有效,2)是否需要它?我不太清楚它的作用。

我可以推断的最多是它在stripslashes()$_POST等数组中的每个值上运行$_GET并返回它们进行清理。它是否正确?如果它仅用于在Magic Quotes打开时运行,现在它已被删除,它现在是否有效使用?

1 个答案:

答案 0 :(得分:1)

如果有帮助,可以像这样重写:

function sanitize($value) {
    if(is_array($value)) {
        $value = array_map('sanitize', $value);
    } else {
        $value = stripslashes($value);
    }

    return $value;
}

如果$value是一个数组,它会在每个项目上自行运行,如果它是一个字符串,它只是运行stripslashes它。有关详细信息,请查看php.net stripslashes array_map上的文档。它基本上采用字符串或数组,并对每个值运行stripslashes

也请查看ternary运算符,以帮助清除看起来很奇怪的if语句。