2012-07-13 65 views
3

我正在使用订阅脚本将用户电子邮件地址添加到mysql记录。我使用下面的代码进行这个过程。它工作正常。用户提交电子邮件页面刷新后,数据库也更新为mysql :-)。但问题是,当我提交电子邮件后刷新页面,我得到一个符合形式重新提交对话框。如果我点击继续按钮相同的电子邮件(dublicate)正在更新在新record.my数据库正在更新相同的电子邮件地址当我刷新页面。如何禁用此消息并停止更新mysql中的相同重复记录。如何在刷新页面时停止“符合表单重新提交”对话框

<form id="myForm" action="" onsubmit="return validateForm();"method="post"> 
    <input type="hidden" name="action" value="update" /> 
    <input type="text" name="email" id="email" value="Enter your email here" onfocus="if (this.value == 'Enter your email here') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Enter your email here';}" onwebkitspeechchange = "this.value = this.value.replace('Enter your email here','')" style=" margin:0px 0px 0px 26px;color:#999; border:4px solid #bbb;border-radius:6px;font-size:1em;width:260px;height:30px; font-style:italic; font-family:"Times New Roman", Times, serif;"/> 
    <br> 
    <center> 
     <input class="button" type="image" src="rss.png" /> 
    </center> 
</form> 
<?php 
    $email = $_POST['email']; 
    mysql_connect ("localhost", "root", "") or die ('Error: ' . mysql_error()); 
    mysql_select_db ("test"); 
    $query="INSERT INTO newsletter_emails (email)VALUES ('".$email."')"; 
    mysql_query($query) or die ('Error updating database'); 
?> 
<script> 
function validateForm() { 
    var x = document.forms["myForm"]["email"].value; 
    var atpos = x.indexOf("@"); 
    var dotpos = x.lastIndexOf("."); 
    if (atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= x.length) { 
     alert("Not a valid e-mail address"); 
     return false; 
    } else { 
     alert("thankyou"); 
    } 
} 
</script> 
+3

请不要使用'mysql_ *'函数来获取新代码。他们不再被维护,社区已经开始[弃用流程](http://goo.gl/KJveJ)。请参阅[**红框**](http://goo.gl/GPmFd)?相反,您应该了解[准备好的语句](http://goo.gl/vn8zQ)并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能决定,[本文](http://goo.gl/3gqF9)将有助于选择。如果你关心学习,[这里是很好的PDO教程](http://goo.gl/vFWnC)。 – ManseUK 2012-07-13 11:34:05

回答

6

当你提交一个表单后,做一个标准的重定向。这样,POST信息将不会与重定向一起发送。如果您需要存储错误消息等内容,请使用会话。

2

要么;

  • 转移到不同的页面

  • 使用AJAX与AJAX

    通知用户
  • 创建某种检查,以确定是否窗体已经发布插件(没有提交按钮包含例如值)