【发布时间】:2014-08-09 20:35:03
【问题描述】:
我在 wordpress 博客上有这个text editor,我想在插入数据库之前使用HTML Purifier 来净化用户的输入。文本编辑器是一个 iframe,所以我通过使用来获取内容
document.getElementById("comments_comments").value=$("#textEditor").contents().find("body").html();
当用户点击提交按钮时。
我遵循 html 净化器的基本指令,如下所示:
if (isset($_SESSION["user"]) && $_SESSION["user"] != "")
{
require_once '/path/to/HTMLPurifier.auto.php';
$config = HTMLPurifier_Config::createDefault();
$purifier = new HTMLPurifier($config);
$comments = $purifier->purify($_POST["comments"]);
$sql = $wpdb->prepare ("INSERT INTO mytable SET comments = %s",array($comments));
$wpdb->query($sql);
}
但是代码根本没有任何作用。我期待 <script> 标记完全删除,但它们仍以 & lt ;script & gt; 的形式存储在数据库中。我认为这是 wpdb prepare 语句的工作。上面的配置是不是对$_POST不起作用?任何帮助将不胜感激。
【问题讨论】:
-
如果您想简单地清理用户输入,htmlspecialchars() 就可以了。如果您想删除所有标签(仅当您将格式从 HTML 转换为 TXT 时才适用) striptags() 然后 htmlspecialchars() 就可以了。无论如何,HTML Purifier 太过分了。
-
@Xabier,不过我想保留 html 标签。还有其他选择吗?
-
我明白了.. 然后,检查这个答案stackoverflow.com/questions/5512712/sanitizing-html-input
标签: php jquery mysql wordpress htmlpurifier