能力-针对客人
您的问题是,客户没有任何功能。当帖子得到处理时,他们需要通过某些检查。一个是
unfiltered_html
. 抄本:
允许用户在页面、帖子、注释和小部件中发布HTML标记甚至JavaScript代码。
Note: 为不受信任的用户启用此选项可能会导致他们发布恶意或格式错误的代码。
Note: 在WordPress Multisite中,只有超级管理员具有unfiltered_html
能力。
为了仍能将其输入数据库,您应该对其进行编码。以下示例首先修剪前导和尾随空格。然后将所有字符转换为其编码的等效字符,对单引号和双引号进行编码,并以适当的UTF-8返回(建议在PHP 5.4之前的版本中使用ISO-8859-1字符集)。如果您使用的是PHP 5.4+,那么您还可以添加 | ENT_HTML5
将其转换为HTML5。现在是important 部分:使用WP global for allowed tags and PHP去除所有不需要的标签strip_tags
. 最后,我们解码所有HTML标记。现在,您的内容应该可以保存,包括HTML。
$content = trim( $new_post[\'post_title\'] );
$content = htmlentities( $content, ENT_QUOTES, "UTF-8" );
$content = strip_tags( $content, "<".join( "><", array_keys( $GLOBAL[\'allowedtags\'] ) ).">" );
$content = html_entity_decode( $content );
代码没有经过测试,我不能完全确定
join
零件是这样工作的。
strip_tags()
需要字符串和IIRC
global $allowedtags
是一个数组,标记名不带前导/尾随括号作为键,属性作为值。如果这样的话,你将不得不对它进行一点修改(请提交一份[编辑]以防我在某个地方出错)。
安全内容
除此之外,您还插入了通过
$_GET
. 您应该使用
esc_*()
函数,甚至更好的是,本机PHP
filter_var()
或
it\'s cousins.