与文本输入相比,密码输入字段通常接受更大范围的字符。在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
参数允许对单引号进行转义并解决我的问题。decze和CodeCaster是正确的,htmlspecialchars
不会更改密码。谢谢所有。
不,htmlspecialchars
不会产生完全不同的密码。它将产生value="> yeah"
,当浏览器解析时,它被读取为> yeah
。密码字段在处理特殊或非特殊字符时没有任何特殊。
将显示逻辑与数据逻辑分离。
在html页面上显示数据之前,请使用htmlspecialchars()
。如果您打算将其存储在数据库中,请使用适当的sql转义方法(如mysql_real_escape_string()
.
>
,它将被视为>
张贴;
您可以使用htmlspecialchars_decode()
来解码您的密码。
但是,如果密码错误,我不认为重新填充密码输入的原因,我也不认为它是安全的。我也希望你不要在数据库中以文本格式保存密码
在HTML表单上转义输入的正常方法包括在输入内容上使用htmlspecialchars($_POST['content'])。
那是不正常的,而且是错误的。
转义HTML通常用于输出,而不是用于输入。
如果在密码更新过程验证失败的情况下,我需要在HTML表单上重新填充新密码,该怎么办?
这是危险的做法,大多数服务要求用户在这种情况下重新输入密码。
在HTML表单上重新填充?
这里是HTML转义。与其他情况不同,当您要填充表单值时,HTML转义是强制性的。