说来惭愧,做PHP的工作近两年了,从来没有想过这个问题。看了写资料,还是有些乱,我总结了一些情况,也不知全不全,更不知对不对。
表单和处理程序可以在一个文件中,也可以在两个文件中
会产生表单重复提交的情况:
1)如果表单和处理在一个文件中,在我点击了submit上传的自己的文件来处理后,我点击了浏览器的刷新按钮。
2)如果表单和处理在一个文件中,我快速点击了submit 好几次。
3)如果表单和处理不在一个文件中,在我点击了submit上传后,会跳到相应处理的页面,在新页面中,我点击浏览器的刷新按钮。这是我能想到的会产生重复提交的情况,不知还有没有其它的了,欢迎补充。谢谢

解决方案 »

  1.   


    <?php
    session_start();
    if(empty($_SESSION['ip']))//第一次写入操作,判断是否记录了IP地址,以此知道是否要写入数据库
    {
    $_SESSION['ip']=$_SERVER['REMOTE_ADDR'];//第一次写入,为后面刷新或后退的判断做个铺垫
    ...........//写入数据库操作
    }
    else//已经有第一次写入后的操作,也就不再写入数据库
    {
    echo '请不要再次刷新和后退';//写一些已经写入的提示或其它东西
    }
    ?>
      

  2.   

    第一个和第三个问题是一样的,你可以在提交页面设置session 然后再提交后的页面中destroy 这个session 变量,或者其他的办法
    第二个问题你可以点提交的时候用js 让按钮disable 这样就可以避免多次点提交了
      

  3.   

    jsp 重复提交问题怎么解决