Tom*_*Tom 6 php mysql text html-encode
我的网站上有一个文本框,我需要存储用户输入的数据库,并在以后检索它.我需要完全按照用户输入的方式存储它,包括特殊字符,回车等.
我应该在PHP中使用哪个进程将其存储在我的数据库字段(这是一个'text'字段)中?我应该使用PHP的html_encode或类似的东西吗?
谢谢.
编辑:我还需要存储正确的格式,即选项卡和多个空格.
$safetext = mysql_real_escape_string($_POST['text']);
$query = "INSERT INTO my_table (`my_field`) VALUES ('$safetext')";
mysql_query($query);
Run Code Online (Sandbox Code Playgroud)
这应该工作.
将数据写入数据存储时,不应对其进行 html 编码 - 这样您就可以将数据用于其他用途(例如电子邮件、PDF 文档等)。正如Assaf已经说过的:必须通过转义输入或使用参数化插入查询来避免 SQL 注入。
但是,在 HTML 页面上显示数据时,您应该,不,必须对数据进行 html 编码!这将使危险的 HTML 或 Javascript 代码变得无用,因为数据中存在的 HTML 标签将不再被浏览器识别为 HTML 标签。
当您允许用户发布带有 HTML 标签的数据时,该过程会稍微复杂一些。然后,您必须跳过输出编码,转而进行输入清理,输入清理可以根据您的需要任意复杂(例如允许的标签)。