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


how to stop user putting HTML code in text inputs

>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']);