2

我有一种系统,每个人都可以输入他想要的任何内容。不过,他们似乎也可以使用诸如<img SRC="..."/>等标签<a href="..."></a>

你怎么能完全防止这种情况呢?例如,如果有人<h1>Hello</h1>输入文本不会变大,但它只会显示<h1>Hello</h1>.

如果无法做到这一点,请给我一个替代方案。

4

6 回答 6

7

要使 HTML 以书面形式显示,您需要使用“转义”特殊字符 &、< 和 > htmlspecialchars()

或者,您可以删除所有标签并使用strip_tags()

于 2012-09-11T17:55:53.767 回答
3

您可以尝试:

echo htmlspecialchars('<a href="http://www.google.com">Google</a>');

更多信息在这里

于 2012-09-11T17:54:10.677 回答
1

只需在要打印的字符串上使用 htmlentities

于 2012-09-11T17:54:37.647 回答
0

特殊字符或标签被视为不同的元素。在将文本插入数据库之前,您可以使用htmlspecialcharacters($string_to_be_inserted)来转义 html 标签。

所有的 html 标签都会被删除,只有文本会被插入到数据库中。

希望这可以帮助

于 2012-09-11T18:09:07.787 回答
0

您还可以使用HTMLPurifier从用户输入中去除不需要的 HTML 标签

于 2012-09-11T18:16:00.577 回答
-1

使用 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 生成器。

于 2018-04-25T23:10:05.583 回答