与文本输入相比,密码输入字段通常接受范围广泛的字符。在 HTML 表单上转义输入的正常方法涉及对输入内容使用 htmlspecialchars($_POST['content'])
。
如果在密码更新过程验证失败的情况下,我需要新密码重新填充到 HTML 表单上怎么办?像 '> yeah
这样的东西会导致表单出现故障,使用 htmlspecialchars
会产生一个完全不同的密码。
有什么建议吗?
如图所示的html部分:
<INPUT type=password name=password1 value=''><script>try' size=15 maxlength=15>
对应的php代码:
function h($str) {echo htmlspecialchars($str);}
echo "<INPUT type=password name=password1 value='", h(@$_POST['password1']), "' size=15 maxlength=15>";
表单输入字段中显示为空白。
更新
问题出在我的 htmlspecialchars
上,默认情况下它不会转义单引号。现在添加 ENT_QUOTES
参数允许转义单引号并解决我的问题。 deceze 和 CodeCaster 是正确的,htmlspecialchars
不会更改密码。谢谢大家。
最佳答案
不,htmlspecialchars
不会生成完全不同的密码。它会产生 value="> yeah"
,当被浏览器解析时,它被读取为 > yeah
。密码字段在处理特殊或非特殊字符方面没有任何特殊之处。
关于php - 如何正确转义 HTML 表单上的密码字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7792038/