我有一种系统,每个人都可以输入他想要的任何内容。不过,他们似乎也可以使用诸如<img SRC="..."/>
等标签<a href="..."></a>
。
你怎么能完全防止这种情况呢?例如,如果有人<h1>Hello</h1>
输入文本不会变大,但它只会显示<h1>Hello</h1>
.
如果无法做到这一点,请给我一个替代方案。
要使 HTML 以书面形式显示,您需要使用“转义”特殊字符 &、< 和 > htmlspecialchars()
。
或者,您可以删除所有标签并使用strip_tags()
只需在要打印的字符串上使用 htmlentities
特殊字符或标签被视为不同的元素。在将文本插入数据库之前,您可以使用htmlspecialcharacters($string_to_be_inserted)来转义 html 标签。
所有的 html 标签都会被删除,只有文本会被插入到数据库中。
希望这可以帮助
您还可以使用HTMLPurifier从用户输入中去除不需要的 HTML 标签
使用 htmlspecialchars_decode() 函数。它对我来说很好......
使用指南
带代码的文本
<?php
$text = "
<html>
<head>
<title>Page Title</title>
</head>
<body>
Reference site about Lorem Ipsum, giving information on its origins, as well as a random Lipsum generator.
</body>
</html> ";
OR
$text = $row['columnname']; // Here define your database table column name.
echo htmlspecialchars_decode($text);
?>
输出:
关于 Lorem Ipsum 的参考站点,提供有关其起源的信息,以及随机 Lipsum 生成器。