iv一直在建立一个网站,在测试时我发现如果我放<em>bob</em>
或我的注册/ udate页面上的文本字段中的类似内容,它们在输入'<em>bob</em>'
时存储在数据库中,但当重新回到网站时,它们以斜体显示
有没有办法阻止我的文字输入中的HTML代码? 或者从数据库回显到页面上时,它只读作html? 大多数人只是想知道这里发生了什么? 以斜体显示的名称不是主要问题,但似乎是用户无法控制的内容?
P.S。如果需要我可以提供代码,但不认为这个问题会有多大帮助?
答案 0 :(得分:5)
您也可以使用htmlspecialchars()
输出他们在页面上输入的内容 - 原样。
因此,如果他们输入<i>bob</i>
,那么页面上显示的内容就是<i>bob</i>
- 这样你就可以“允许”世界上的所有输入,但这些输入都不会被渲染
如果您想摆脱标记,strip_tags()
是更好的选择,因此<i>bob</i>
会显示为bob
。如果您确定没有合法的方案可能会有人想要输入HTML标记,则此方法有效。 (例如,Stack Overflow显然不能只是从我们输入的内容中删除标签,因为很多问题都涉及输入HTML标签。)
答案 1 :(得分:4)
您可以使用strip_tags
从字符串中删除所有HTML标记:http://php.net/manual/es/function.strip-tags.php
<?php
$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
echo strip_tags($text); // Output: Test paragraph. Other text
echo "\n";
// Allows <p> and <a>
echo strip_tags($text, '<p><a>'); // Output: <p>Test paragraph.</p> <a href="#fragment">Other text</a>
?>
答案 2 :(得分:2)