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


Posted in PHP onSeptember 29, 2015

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

<?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. 如果是重复提交表单

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

4. 设置token值
$token = mt_rand(0,1000000);
2$_SESSION['token'] = $token;

以上就是关于如何解决php表单重复提交实现方法,希望对大家的学习有所帮助。

PHP 相关文章推荐
PHP三层结构(上) 简单三层结构
Jul 04 PHP
PHP学习笔记 用户注册模块用户类以及验证码类
Sep 20 PHP
利用php获取服务器时间的实现代码
Jun 07 PHP
php使用base64加密解密图片示例分享
Jan 20 PHP
PHP处理Json字符串解码返回NULL的解决方法
Sep 01 PHP
php使用ZipArchive提示Fatal error: Class ZipArchive not found in的解决方法
Nov 04 PHP
THINKPHP内容分页代码分享
Jan 14 PHP
ThinkPHP中调用PHPExcel的实现代码
Apr 08 PHP
PHP高精确度运算BC函数库实例详解
Aug 15 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
Sep 16 PHP
Laravel 批量更新多条数据的示例
Nov 27 PHP
phpstudy后门rce批量利用脚本的实现
Dec 12 PHP
php正则匹配文章中的远程图片地址并下载图片至本地
Sep 29 #PHP
php猜单词游戏
Sep 29 #PHP
PHP代码优化技巧小结
Sep 29 #PHP
php提取身份证号码中的生日日期以及验证是否为成年人的函数
Sep 29 #PHP
PHP类的封装与继承详解
Sep 29 #PHP
PHP比较运算符的详细介绍
Sep 29 #PHP
php提高网站效率的技巧
Sep 29 #PHP
You might like
Netflix将与CLAMP、乙一以及冲方丁等6名知名制作人合伙展开原创动画计划!
2020/03/06 日漫
PHP输出控制功能在简繁体转换中的应用
2006/10/09 PHP
浅析php面向对象public private protected 访问修饰符
2013/06/30 PHP
php递归函数中使用return的注意事项
2014/01/17 PHP
Ubuntu 16.04下安装PHP 7过程详解
2017/03/28 PHP
Laravel框架Eloquent ORM删除数据操作示例
2019/12/03 PHP
Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解
2020/04/06 PHP
jquery使用jxl插件导出excel示例
2014/04/14 Javascript
js实现精美的图片跟随鼠标效果实例
2015/05/16 Javascript
深入学习JavaScript中的原型prototype
2015/08/13 Javascript
jQuery事件绑定用法详解
2016/09/08 Javascript
Vue 进阶教程之v-model详解
2017/05/06 Javascript
Bootstrap多级菜单的实现代码
2017/05/23 Javascript
深入讲解xhr(XMLHttpRequest)/jsonp请求之abort
2017/07/26 Javascript
vue组件详解之使用slot分发内容
2018/04/09 Javascript
使用 vue 实例更好的监听事件及vue实例的方法
2019/04/22 Javascript
ES6 Promise对象的含义和基本用法分析
2019/06/14 Javascript
JavaScript setTimeout()基本用法有哪些
2020/11/04 Javascript
php使用递归与迭代实现快速排序示例
2014/01/23 Python
Python批量修改文件后缀的方法
2014/01/26 Python
Python装饰器原理与用法分析
2018/04/30 Python
Python global全局变量函数详解
2018/09/18 Python
Python 图像处理: 生成二维高斯分布蒙版的实例
2019/07/04 Python
python实点云分割k-means(sklearn)详解
2020/05/28 Python
Python flask框架实现查询数据库并显示数据
2020/06/04 Python
基于PyTorch的permute和reshape/view的区别介绍
2020/06/18 Python
浅谈CSS3特性查询(Feature Query: @supports)功能简介
2017/07/31 HTML / CSS
详解HTML5如何使用可选样式表为网站或应用添加黑暗模式
2020/04/07 HTML / CSS
法国娇韵诗官方旗舰店:Clarins是来自法国的天然护肤品牌
2018/06/30 全球购物
Java面试题:Java类的Main方法如果是Private将会怎么样
2016/08/18 面试题
应届生如何写自荐信
2014/01/05 职场文书
职业生涯规划书基本格式
2014/01/06 职场文书
数控技术学生的自我评价
2014/02/15 职场文书
幼儿园老师工作总结2015
2015/05/22 职场文书
golang 接口嵌套实现复用的操作
2021/04/29 Golang
MongoDB安装使用并实现Python操作数据库
2021/06/28 MongoDB