在插入mysql之前,HTML净化器无法使用$ _POST

时间:2014-08-09 20:35:03

标签: php jquery mysql wordpress htmlpurifier

我在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>标签完全删除,但它们仍然存储在数据库中,并且&amp; LT;脚本&amp; gt;我认为这是wpdb准备语句的工作。上述配置不适用于$_POST吗?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

首先请确保,您真的不允许使用此标记:

$config->set('HTML.ForbiddenElements', ['script']));

你说的是在数据库中以此结尾:

& lt ;script & gt ;

您确定,您还没有使用htmlspecialchars()吗?也许有这样的事情?

foreach ($_POST as $key => $value) {
    $_POST[$key] = htmlspecialchars($value)
}

我99,99%肯定,它与数据库无关。如果你做var_dump($comment)而不是插入数据库,它将是相同的。