如何阻止用户将HTML代码放入文本输入

时间:2016-03-22 12:39:09

标签: php html

iv一直在建立一个网站,在测试时我发现如果我放<em>bob</em>

或我的注册/ udate页面上的文本字段中的类似内容,它们在输入'<em>bob</em>'时存储在数据库中,但当重新回到网站时,它们以斜体显示

有没有办法阻止我的文字输入中的HTML代码? 或者从数据库回显到页面上时,它只读作html? 大多数人只是想知道这里发生了什么? 以斜体显示的名称不是主要问题,但似乎是用户无法控制的内容?

P.S。如果需要我可以提供代码,但不认为这个问题会有多大帮助?

3 个答案:

答案 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)

您可以使用内置PHP函数strip_tags。它将从字符串中删除所有HTML标记并返回结果。

类似的东西:

$cleaned_string = strip_tags($_GET['field']);