你好,我想知道什么时候使用htmlspecialchars()函数是合适的。是在将数据插入数据库之前还是在从数据库检索数据时?
你好,我想知道什么时候使用htmlspecialchars()函数是合适的。是在将数据插入数据库之前还是在从数据库检索数据时?
只有在将数据呈现为HTML时才应该调用此方法。
不要将转义后的HTML存储在数据库中;这只会使查询变得更加麻烦。
数据库应该存储您的实际数据,而不是其HTML表示。
htmlspecialchars
,以使其被解释为内容而非 HTML。将用户输入的内容保存到数据库中。
然后在向公众展示时,使用htmlspecialchars()
函数,以提供一定的XSS保护。
指南 - 如何在PHP中使用htmlspecialchars()函数
首先,您需要理解一个简单的概念:渲染。
什么是渲染? 渲染是指HTML转换的过程。
<b>Hello</b>
要加粗文字,可以这样写:Hello。这是渲染效果。
那么...何时使用htmlspecialchars()函数?
无论何时需要呈现HTML内容时都要使用该函数。例如,如果您正在使用JQuery,并且执行以下操作:
$("#YourDiv").html("<b>Hello</b>");
如果你想以这种方式显示消息(由用户编写):
<b>Hello</b>
你需要添加:
$("#YourDiv").text("<b>Hello</b>");
这样Hello将永远不会被渲染出来。
如果你想把用户写的消息加载到文本框、文本区域等中,你需要输入:
<input type="text" class="Texbox1" value="">
<script>
$(".Textbox1").val("<b>Hello</b>");
</script>
这将会显示
<b>Hello</b>
在文本框内没有问题。
结论:
无论用户在表单等中输入什么数据,请按照正常方式保存数据。不要使用任何函数。如果用户发送了12345,请原样保存。不要过滤任何内容。只有在将数据显示给用户时才需要过滤。您自己决定是否要呈现用户编写的内容。*请记住这一点。
问候!