1

我网站上的用户可以发布新闻。但是现在,就 HTML 而言,这都是荣誉系统。

function postNewsItem($subject, $body, $userid){
  $time = time();
  $subject = mysql_real_escape_string($subject);
  $body = mysql_real_escape_string($body);
  $q = "INSERT INTO news (subject, body, userid) VALUES ('$subject', '$body', '$userid')";
  $result = mysql_query($q, $this->connection);
  return 1;
}

我希望用户能够链接到图像、构建表格、加粗字词等,但我不希望他们能够链接到恶意脚本等等。我知道有一些方法可以从用户输入中转义 HTML,但是有没有办法在允许某些标签的同时做到这一点?

4

2 回答 2

6

使用HTML 净化器。它允许您基本上创建允许标签的白名单,并过滤掉其他任何内容。

于 2009-09-09T02:04:10.803 回答
6

您可以使用 strip_tags 并允许某些标签

www.php.net/strip_tags

<?php
$allow = '<table><thead><th><tr><td><tbody><tfoot><img><a><b><i><u>';

$body = mysql_real_escape_string(strip_tags($body, $allow));
?>

当然你需要清理一些属性

于 2009-09-09T02:13:27.033 回答