我正在运行一个MySql和PHP驱动的博客/评论风格的网站,并希望这样做,以便用户可以在帖子中添加格式标记,例如<bold>
,<italics>
等。但是,在运行类似htmlentities之类的标签时,用户无法发布<a>
或<div id="footer">
之类的内容并破坏网站。
问题是如何解决这个问题?我是否这样做,所以htmlentities或类似功能有允许标签的白名单?我在这个问题上找不到任何结果或帮助。目前我对数据库实体的分层顺序是:
$content = nl2br ($_POST["content"]);
$content = mysql_real_escape_string($content);
$content = trim($content);
$content = htmlentities($content);
感谢您的帮助。再一次,我想知道htmlentities是否是我想用来实现这个功能,所以任何建议或地方都会非常感激!
答案 0 :(得分:2)
白名单必须......使用strip_tags()函数,第二个参数。
// Allow <p> and <a>
echo strip_tags($text, '<p><a>');
不要将编码的html保存在数据库中。