重复提交是我们开发中会常碰到的一个问题,除了我们使用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;

第四下载 https://www.dddzd.com 是一个专业的软件下载站点,软件类型广泛,需要下软件的朋友就去第四下载哦!

第四下载手机站:https://m.dddzd.com

php 解决表单重复提交实现方法介绍的更多相关文章

  1. java web解决表单重复提交问题

    我们大家再进行web开发的时候,必不可少会遇见表单重复提交问题.今天就来给总结如何解决表单提交问题,欢迎大家交流指正. 首先我们在讨论如何解决表单重复提交问题之前先来解决三个问题:1.什么叫表单重复提 ...

  2. 使用js控制表单重复提交(1加锁,2事件方式,3 EasyUI中解决表单重复提交)

    方法一. var flag = true; $(function() { $("#interested").click(function() { beInterested(); } ...

  3. 防止Web表单重复提交的方法总结

    在Web开发中,对于处理表单重复提交是经常要面对的事情.那么,存在哪些场景会导致表单重复提交呢?表单重复提交会带来什么问题?有哪些方法可以避免表单重复提交? 表单重复提交的场景 1.场景一:服务端未能 ...

  4. java web解决表单重复提交

    首先我们在讨论如何解决表单重复提交问题之前先来解决三个问题:1.什么叫表单重复提交?2.什么情况下会出现表单重复提交?3.什么情况需要避免表单重复提交? 什么叫表单提交问题,说白了,就是同一份信息,重 ...

  5. php解决表单重复提交

    php解决表单重复提交时间:2015-2-28 | 评论:1条评论 | 被查看了 189 次 | 标签:php, W3cui重复提交是我们开发中会常碰到的一个问题,除了我们使用js来防止表单的重复提交 ...

  6. Struts2中解决表单重复提交

    3. 表单的重复提交问题 1). 什么是表单的重复提交 > 在不刷新表单页面的前提下:  >> 多次点击提交按钮 >> 已经提交成功, 按 "回退" ...

  7. PHP使用token防止表单重复提交的方法

    本文实例讲述了PHP使用token防止表单重复提交的方法.分享给大家供大家参考,具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2 ...

  8. php 解决和避免form表单重复提交的方法

    在提交表单的时候,可能遇到网速等导致页面突然加载变慢,用户重复地点击提交按钮,将在数据库产生多条数据,导致不可控情况. 比如下面的情况就会导致表单重复提交: 点击提交按钮两次. 点击刷新按钮. 使用浏 ...

  9. [原创]java WEB学习笔记34:Session 案例 之 解决表单重复提交

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

随机推荐

  1. PHP next() 函数

    实例 输出数组中的当前元素和下一个元素的值: <?php$people = array("Peter", "Joe", "Glenn" ...

  2. PHP timezone_location_get() 函数

    ------------恢复内容开始------------ 实例 返回指定时区的位置信息: <?php$tz=timezone_open("Asia/Taipei");ec ...

  3. PHP expm1() 函数

    实例 返回 exp() - 1: <?phpecho(expm1(0) . "<br>");echo(expm1(1) . "<br>&qu ...

  4. IC行业常见用语

    https://www.cnblogs.com/yeungchie/ Active Devices 有源器件 MOSFET Metal-Oxide-Semicoductor Field-Effect ...

  5. bzoj 2780 [Spoj]8093 Sevenk Love Oimaster

    LINK:Sevenk Love Oimaster 询问一个模式串在多少个文本串中出现过. 考虑广义SAM 统计这种数量问题一般有三种做法. 一种 暴力bitset 这道题可能可以过? 一种 暴力跳p ...

  6. ASP.NET MVC+LayUI视频上传

    前言: 前段时间在使用APS.NET MVC+LayUI做视频上传功能的时,发现当上传一些内存比较大的视频就会提示上传失败,后来通过查阅相关资料发现.NET MVC框架为考虑安全问题,在运行时对请求的 ...

  7. 030_go语言中的通道关闭

    代码演示 package main import "fmt" func main() { jobs := make(chan int, 5) done := make(chan b ...

  8. node根据excel批量更名

    程序预览 index.js var xlsx = require('node-xlsx'); var fs = require('fs'); process.stdin.setEncoding('ut ...

  9. Devops 原始思想 所要实现的目标

    解释: DevOps(Development和Operations的组合词)是一组过程.方法与系统的统称,用于促进开发(应用程序/软件工程).技术运营和质量保障(QA)部门之间的沟通.协作与整合. 它 ...

  10. 谈谈MySql索引

    刚刚学习完丁奇老师<MySql 实战 45 讲>专栏中的索引部分,图文并茂的风格解开了我之前的许多疑惑,并且学习到许多新的东西,在此做个笔记,方便后续复习.由于 MySql 中存在多种存储 ...