>iv 一直在构建一个网站,在测试时我注意到如果我把<em>bob</em>
或我的注册/udate页面上的文本字段中的类似内容,它们以'<em>bob</em>'
输入的形式存储在数据库中,但是当调用回网站时,它们以斜体显示
有没有办法阻止我的文本输入中的 HTML 代码?还是在从数据库回显到页面上时仅将其读取为 HTML?主要是想知道这里发生了什么?以斜体显示的名称不是主要问题,但似乎是用户不应该能够控制的事情?
附言如果需要,我可以提供代码,但认为这对这个问题没有多大帮助?
您也可以
使用htmlspecialchars()
来准确输出他们在页面上键入的内容 - 按原样。
因此,如果他们输入<i>bob</i>
那么页面上显示的内容实际上是<i>bob</i>
- 这样你就"允许"世界上所有的输入,但没有一个被渲染。
如果您只想删除标签,strip_tags()
是更好的选择,因此<i>bob</i>
将显示为 bob
.如果您确定没有合法的情况,有人想要输入 HTML 标记,则此方法有效。(例如,Stack Overflow显然不能只是从我们键入的内容中删除标签,因为很多问题都涉及键入HTML标签。
您可以使用
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>
?>
您可以使用内置的PHP函数strip_tags
。它将从字符串中删除所有 HTML 标记并返回结果。
像这样:
$cleaned_string = strip_tags($_GET['field']);