与文本输入相比,密码的输入字段通常接受多种字符。在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
不会更改密码。谢谢大家。
答案 0 :(得分:3)
将显示逻辑与数据逻辑分开。
在想要在html页面上显示数据之前,请使用htmlspecialchars()
。如果您要将其存储在数据库中,请使用适当的sql转义方法(如mysql_real_escape_string()
。
顺便说一下,如果输入元素包含例如>
,则在发布时会将其视为>
;
答案 1 :(得分:3)
不,htmlspecialchars
不会产生完全不同的密码。它会产生value="> yeah"
,当浏览器解析时,它被读作> yeah
。密码字段在处理特殊字符或非特殊字符时没有任何特殊之处。
答案 2 :(得分:1)
您可以使用htmlspecialchars_decode()
解密密码。
http://www.php.net/manual/en/function.htmlspecialchars-decode.php
但是,如果密码错误,我没有看到重新输入密码输入的原因,也不认为它是安全的。我也希望你不要在数据库中以文本格式保存密码。
答案 3 :(得分:1)
在HTML表单上转义输入的常规方法是在输入内容上使用htmlspecialchars($ _ POST ['content'])。
这不是正常而是错误的方式 转义HTML通常用于输出,而不用于输入。
如果在验证密码更新过程失败的情况下,我需要在HTML表单上重新填充新密码,该怎么办?
这是危险的做法,大多数服务要求用户在这种情况下重新输入密码。
在HTML表单上重新填充?
这是HTML转义。与其他情况不同,当您要填充表单值时,HTML转义是强制性。