zoukankan      html  css  js  c++  java
  • php防止重复提交表单

    解决方案一:引入cookie机制来解决

    提交页面代码如下a.php代码如下:

    <form id="form1" name="form1" method="post" action="t2.php">
    
        <p>说明
    
            <input type="text" name="titile" />
    
    </p>
    
        <p>
    
            <input type="submit" name="Submit" value="提交" />
    
    </p>
    
    </form>
    
    <?php
    
    setcookie("onlypost", 't');         //设置cookie,可以带上时间值。像有些论坛防止灌水就可以将你的一些基本信息存放到里面。
    
    ?>

    Php代码

    <?php  
      
    if($_COOKIE['onlypost'] == 't'){  
      
        print_r($_COOKIE);  
      
        //处理提交的内容           如果验证成功则处理  
      
        print "ok";  
      
        setcookie("onlypost", 'f'); //改变cooike值删除也可以了  
      
    }  
      
    ?>  

    如上处理的缺点:如果客户端禁止了Cookie,该方法将不起任何作用,这点请注意。

    解决方案二:使用session(这个与JSP处理方法是一样的)

    利用PHP的Session功能,也能避免重复提交表单。Session保存在服务器端,在PHP运行过程中可以改变Session变量,下次访问这个变量时,得到的是新赋的值,所以,可以用一个Session变量记录表单提交的值,如果不匹配,则认为是用户在重复提交。

    A页面的代码:

    <?php
    
    session_start();                //根据当前SESSION生成随机数
    
    $code = mt_rand(0,1000000);
    
    $_SESSION['code'] = $code;      //将此随机数暂存入到session
    
    ?>
    
    <form id="form1" name="form1" method="post" action="t2.php">
    
        <p>说明
    
            <input type="text" name="titile" />
    
            <input type="hidden" name="originator" value="<?php echo $code;?>">
    
    </p>
    
        <p>
    
            <input type="submit" name="Submit" value="提交" />
    
    </p>
    
    </form>
    
    B页面:
    
    <?php
    
    session_start();
    
    if(isset($_POST['originator'])) {
    
        if($_POST['originator'] == $_SESSION['code']){
    
            echo "ok";
    
            unset($_SESSION["code"]);               //将其清除掉此时再按F5则无效
    
        }else{
    
        echo "请不要刷新本页面或重复提交表单";
    
        }
    
    }?>

    解决方案三:在服务器端做重定向处理

    if (isset($_POST['action']) && $_POST['action'] == 'submitted') {
    // 处理数据,如插入数据后,立即转向到其他页面
    header('location:submits_success.php');     //效果与JSP里面的sendRedirect类似
    }
  • 相关阅读:
    hdu 1695 GCD 欧拉函数 + 容斥
    E. Xenia and Tree 分块 + LCA
    二分图匹配 + 构造 E. Arpa’s overnight party and Mehrdad’s silent entering
    Win系统如何修改远程桌面端口3389
    centos7下使用selenium实现文件上传
    windows下tesseract-ocr的安装及使用
    windows下pycharm输入法跟随设置
    django 外键使用select html
    xstart访问centos7
    Centos7 安装VNC实现远程桌面
  • 原文地址:https://www.cnblogs.com/qingsong/p/5377149.html
Copyright © 2011-2022 走看看