我已经设置了密码重置选项。用户可以填写他们的电子邮件地址,并将电子邮件发送到地址。该电子邮件包含一个URL,用户可以在其中填写新密码。完成了一些验证和清理并将其提交给数据库。
在我的两个表单中,我都有一个带display:none
的输入字段。如果此字段具有值,则在提交表单时将返回错误。我这样做是为了防止机器人填写表格。
用户填写其电子邮件地址的第一个表单提交没有任何错误。但是,当我填写新密码并提交时,我会收到与输入字段链接的错误消息display:none
。
奇怪的是,这只发生在一台计算机上。我已经在一台带有Firefox和Safari的计算机上进行了测试,效果很好。在另一台计算机上Safari工作正常,Firefox返回错误。我已经自动检查了可以填写的信息,但一无所获。
我的代码:
if(!empty($_POST['email'])) {
echo "Failure.
Click <a href=\"registration.php\">here</a> to return.";
}
<form action="password_lost.php?t=<?php echo $_GET['t'] . "&e=" . $_GET['e']; ?>" method="POST">
<input type="text" class="email" style="display:none;" name="email" value="" />
<input type="password" name="password" size="30">
<input type="submit" name="reset" value="Submit" />
</form>
$_GET['t'] = a token
$_GET['e'] = the emailaddress
这种情况怎么可能只在一个浏览器中发生,只有一个表单。
答案 0 :(得分:1)
尝试清除浏览器缓存并将自动填充设置为关闭。
火狐: 有关密码,请转到编辑&gt;偏好&gt;隐私与安全安全&gt;密码并取消选中记住密码的选项。请注意,密码可以加密格式存储。
答案 1 :(得分:0)
我不知道为什么浏览器的行为会有所不同,但为什么不添加autocomplete="off"
?像这样:
<input type="text" class="email" style="display:none;" name="email" value="" autocomplete="off" />
答案 2 :(得分:0)
尝试更改此行
if(!empty($_POST['email'])) {
对此:
if($_POST['email']) {
我也会print_r($_POST)
这样你就可以看到表格提交的内容了。根据浏览器和PC查看提交的内容是否发生了变化。