本人是个初学者,有个问题要问下高手:我的表单和表单的提交做在同一个页面,但测试的时候,如果刷新页面,会发生重复提交页面的情况,如何解决这个问题?不要复制过来的,感激不尽!(请把代码直接填充进去,并做标志,谢谢高手)<html>
<body>
<script language="javascript">
function change(){
document.getElementById("name1").value=document.getElementById("name").value;
document.getElementById("name2").value=document.getElementById("title").value;
document.getElementById("name3").value=document.getElementById("message").value;
document.getElementById("name4").value=document.getElementById("email").value;
}
//alert("提交成功!");
</script>
<TABLE align="=center" WIDTH="60%" border="=1"></a>
<tr><td align="center">留言板:</td><td></td><td align="=center">您提交的留言是:</td></tr>
<form action="zhang-test1.php" method="post">
<tr><td>用户名: <input type="text" name="name" /></td><td></td><td>用户名: <input type="text" name="name1"></td></tr>
<tr><td>标题: &nbsp;&nbsp;<input type="text" name="title" /></td><td></td><td>标题: &nbsp;&nbsp;<input type="text" name="name2" ></td></tr>
<tr><td>内容: &nbsp;&nbsp;<input type="text" name="message" /></td><td></td><td>内容: &nbsp;&nbsp;<input type="text" name="name3" ></td></tr>
<tr><td>e-mail: <input type="text" name="email" /></td><td></td><td>e-mail: <input type="text" name="name4" ></td></tr>
<tr><td align="center"><input type="button" onclick="change();" value="提交"/></td><td></td><td>时间: &nbsp;&nbsp;<input type="text" name="name5" value=<?php
if(phpversion()>='5.1.0')//获得当前PC时间
{
    date_default_timezone_set('Asia/Shanghai');
}
$time=date('Y-m-d H:i:s',time());
?>>&nbsp;&nbsp<input type="submit" value="提交数据库"/></td></tr>
</form>
</TABLE>
<?php
$name=$_POST["name"];
$title=$_POST["title"];
$message=$_POST["message"];
$email=$_POST["email"];
$conn2=mysql_connect("localhost","root","") or die("无法连接数据库");
mysql_select_db("shopnc",$conn2) or die("无法连接数据库shopnc");
$sql2="insert into user_message(name,title,message,email,time) values ('$name','$title','$message','$email','$time')";
mysql_query($sql2)or die(mysql_error());
?>
</body>
</html> 

解决方案 »

  1.   

    我做过的一个思想是:在提交页面A里提交一个随机数给下一页面B,B收到这个数后进行判断,如果这个随机数已经被保存过了,那么说明是重复提交。如果没有被保存过,那就是新提交,把这个随机数保存起来。
    把A,B写成同一个文件是一回事。
      

  2.   

    我也参考了网上所说的解决方法(设session值/cookie等),但是数据没办法提交到mysql数据库里
      

  3.   

    什么数据没办法提交到db?
    数据无法给db和你防止重复提交本身没有任何关系的。
      

  4.   

    本来是可以提交表单数据到DB的,但是一加了那段代码就没办法提交数据到DB,这是为什么?
      

  5.   

    那你debug啊 看看哪里的逻辑有问题  
      

  6.   


    难道你把提交代码写到 page load 事件里面去了???
      

  7.   

    好像真是的
    lz用下面代码把提交和处理分以下if ($_SERVER["REQUEST_METHOD"]=="POST"){}
    if ($_SERVER["REQUEST_METHOD"]=="GET"){}
      

  8.   

    不是
    是想让你把输入部分和提交后的处理部分分一下,清楚一点。
    我猜你这个 一个是通过get方式打开的资料输入页面 一个是通过post打开的数据处理页面。写在一个一个php文件当然可以,但是你最好知道在打开资料输入页面的时候你这段代码哪些是需要执行的,而点击提交按钮后,又是哪些断码是需要执行的。
    我觉得的你有点乱。搞不清代码是怎么执行的话,加段正常的代码都有可能让你出bug
      

  9.   

    我看了下你代码 感觉你的问题和你代码有点出入
    这么说吧 你这个页面一打开就会往db里insert。这是你需要的吗?
    这个问题搞明白了,再说重复提交的问题比较好
      

  10.   

    1. 提交成功后可以用js清除提交内容, 或者进行页面跳转
    2. 用会话session,cookie之类记录提交次数,或时间。
      

  11.   

    一个页面和两个页面无所谓,逻辑是一样的。
    表单页面-》提交页面,只不过你现在写到一个页面里边了在表单页面增加一个session并赋值,在提交的页面中,获取此session的值进行判断,如果此session有值则提交到数据库,并同时删除此session;如果没有值则返回到提交的页面
      

  12.   


    之前我也有做过设一个session值,后面提交后判断,但是还是不行,奇怪,能帮我看下我的代码吗?方便的话,帮我修改下吧?