繁体   English   中英

获得未转义的 POST,而不是 WordPress 中的魔术引用值

[英]Get unescaped POST, not magic quoted values in WordPress

遵循以下问题: 禁用“魔术引号”后,为什么 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期望一个已经神奇的引用值还是一个未转义的值?

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

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

查看 WordPress 代码以确定wpdb::prepare期望魔术引用值将我们引入可怕的 WordPress 代码的泥潭......>咬舌头<

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM