Wpdb类中的HTML处理程序部分在哪里?

时间:2019-03-01 作者:Peter Westerlund

我试图了解在将数据保存到wpdb 班我搜索了处理HTML字符串数据的位置,并在$this->query() 方法中的查询字符串被剥离,并认为它可能存在。开始了line 1798. 这个$query 字符串变量已剥离:

$stripped_query = $this->strip_invalid_text_from_query( $query );
但我不明白。我just can\'t 查找剥离变量$stripped_query 在之后的查询中使用。如果该方法与原始方法不完全相同,则返回false?:

if ( $stripped_query !== $query ) {
    $this->insert_id = 0;
    return false;
} 
为什么?也许我误解了什么strip_invalid_text_from_query() 正在做什么?

无论如何正如我所说,我只想找到将HTML固定到数据库安全字符串的方法。例如,换行符会破坏查询等等。有人知道那在哪里吗?

2 个回复
SO网友:hamdirizal

wpdb->query() 正在运行查询。它没有什么特别之处。和strip_invalid_text_from_query() 基于内联文档,只需剥离查询中的无效字符。

请注意,像换行符这样的东西不会破坏数据库。数据库可以接受任何字符串数据。你只要确保correctly escaped 查询运行时。

因此有一个PHP函数mysql_real_escape_string. 或者更好地使用准备好的查询字符串(请参见wpdb::prepare()).

SO网友:Jacob Peattie

HTML并没有什么特别之处,它需要与插入的任何其他类型的数据有任何不同的处理方式。这只是文字。因此,中没有特定的“HTML处理程序”wpdb.

数据库中的任何HTML仍然需要escaped 但是,要确保查询安全,不受SQL注入攻击。在里面wpdb 这由prepare() 方法但需要转义的不仅仅是HTML。需要首先转义SQL查询中所有用户提供的值。

$]strip_invalid_text_from_query()strip_invalid_text() 是仅由内部使用的受保护方法wpdb, 而且似乎与HTML没有任何关系。它们的目的似乎是删除数据库字符集中不可用的任何字符。

但这实际上并不是用来剥离角色的。它仅用于通过将结果与原始值进行比较来检查是否存在任何无效字符。如果删除了字符,则操作失败。这就是为什么$stripped_query 在其他任何地方都没有使用。

如果要将数据插入WordPress数据库并确保其安全,则需要使用$wpdb->prepare() 或任何其他helper methods 在内部使用它。

相关推荐

AJAX$wpdb不返回表数据

我正在使用WordPress 5.0.2带WooCommerce 3.5.3 我在checkoutpage上有两个选择下拉字段。我想从billing\\u region下拉列表中检索所选region\\u代码值,然后根据该值填充billing\\u province select下拉列表,但ajax请求不返回任何内容(400)吼叫我的代码HTML : <div class=\"delivery-form-row\"> <label for=\"billing_region\