空输入字段被填充

时间:2014-02-20 13:25:03

标签: php

我已经设置了密码重置选项。用户可以填写他们的电子邮件地址,并将电子邮件发送到地址。该电子邮件包含一个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

这种情况怎么可能只在一个浏览器中发生,只有一个表单。

3 个答案:

答案 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查看提交的内容是否发生了变化。