1

跟随问题:禁用“魔术引号”后,为什么 PHP/WordPress 继续自动转义我的 POST 数据?

在 WordPress 中,即使魔术引号关闭,所有超全局变量也会被转义。

所以,按照这个答案:禁用“魔术引号”后,为什么 PHP/WordPress 继续自动转义我的 POST 数据?

如果我创建一个插件和一个类来访问原始 POST、GET 等,这是一个好的解决方案吗?您在这种方法中看到任何缺点和问题吗?

下面是我的插件:

class MyPluginRequest{
    public static function getPost( $key ){
        global $_REAL_POST;
        return isset( $_REAL_POST[ $key ] )? $_REAL_POST[ $key ] : FALSE ;
    }
}

// A hack to cope with un-configurable call to wp_magic_quotes
// E.G. Make the original $_POST available through a global $_REAL_POST
global $_REAL_GET, $_REAL_POST, $_REAL_COOKIE, $_REAL_REQUEST;
$_REAL_GET     = $_GET;
$_REAL_POST    = $_POST;
$_REAL_COOKIE  = $_COOKIE;
$_REAL_REQUEST = $_REQUEST;

然后MyPluginRequest::getPost( 'submit' );,我每次需要发布的未转义值时使用。

是否$wpdb->escape期望已经引用的值或未转义的值?

4

1 回答 1

1

看起来它应该可以正常工作。$wpdb->escape根据评论块,在我认为已弃用的问题的后半部分

/**
 * Do not use, deprecated.
 *
 * Use esc_sql() or wpdb::prepare() instead.
 *
 * ...

查看 WordPress 代码以确定是否wpdb::prepare期望魔法引用值会导致我们陷入可怕的 WordPress 代码的泥潭...>咬舌<

看起来它对我来说期望非魔术引用的字符串,但是如果你传递一个魔术引用的字符串,它有可能不会双重转义,尽管我会通过测试来验证。

于 2014-04-15T20:08:25.033 回答