zoukankan      html  css  js  c++  java
  • PHP防止表单重复提交的解决方法

     

    PHP+SESSION防止表单重复提交

    index.php

    当前表单页面is_submit设为0

    SESSION_START(); 
    $_SESSION['is_submit'] = 0;
    <form id="reg" action="post.php" method="post"
        <p>用户名:<input type="text" class="input" name="username" id="user"></p> 
        <p>密 &nbsp; 码:<input type="password" class="input" name="password" id="pass"></p> 
        <p>E-mail:<input type="text" class="input" name="email" id="email"></p> 
        <p><input type="submit" name="submit" class="btn" value="提交注册"/></p> 
    </form>

    post.php

    若是提交表单了,设当前'is_submit为1,若是刷新post.php,那么将执行else代码

    SESSION_START(); 
    if (isset($_POST['submit'])) { 
        if ($_SESSION['is_submit'] == '0') { 
            $_SESSION['is_submit'] = '1'; 
            echo "代码块,要做的事,代码...<a onclick='history.go(-1);' href='javascript:void(0)'>返回</a>"; 
        } else { 
            echo "请不用重复提交<a href='index.php'>PHP+SESSION防止表单重复提交</a>"; 
        } 
    }




     

    php 解决表单重复提交实现方法介绍

    [导读] 重复提交是我们开发中会常碰到的一个问题,除了我们使用js来防止表单的重复提交,同时还可以使用php来防止重复提交哦。例1 代码如下复制代码

    重复提交是我们开发中会常碰到的一个问题,除了我们使用js来防止表单的重复提交,同时还可以使用php来防止重复提交哦。

    例1

     代码如下 复制代码

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


    具体原理

    session范围变量token来防止。

    1. 开启session:

    session_start();

    2. 如果有表单提交

     代码如下 复制代码

    if (isset($token))


    token以hidden的形式包含在form当中。

     代码如下 复制代码

    <input type="hidden" name="token" value="<?php echo $token; ?>" />

     
    3. 如果是重复提交表单

     代码如下 复制代码

    1.if ($_SESSION["token"] != $token) { 
    2.    // 不让重复提交,在此处理 
    3.    // header("location:".$_SERVER['PHP_SELF']); 
    4.} else { 
    5.    // 正常的表单提交,在此处理 
    6.    // echo "已提交";    
    7.}

    4. 设置token值

     代码如下 复制代码

    1.$token = mt_rand(0,1000000); 
    2.$_SESSION['token'] = $token;

     
  • 相关阅读:
    HDU 1025 Constructing Roads In JGShining's Kingdom (DP+二分)
    HDU 1158 Employment Planning
    HDU 2059 龟兔赛跑
    Csharp 简单操作Word模板文件
    Csharp windowform datagridview Clipboard TO EXCEL OR FROM EXCEL DATA 保存datagridview所有數據
    Csharp 讀寫文件內容搜索自動彈出 AutoCompleteMode
    Csharp windowform controls clear
    CSS DIV大图片右上角叠加小图片
    Csharp DataGridView自定义添加DateTimePicker控件日期列
    Csharp 打印Word文件默認打印機或選擇打印機設置代碼
  • 原文地址:https://www.cnblogs.com/kenshinobiy/p/6274928.html
Copyright © 2011-2022 走看看