解决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 相关文章推荐
实用函数8
Nov 08 PHP
php表单转换textarea换行符的方法
Sep 10 PHP
php中利用post传递字符串重定向的实现代码
Apr 21 PHP
PHP中strtotime函数使用方法分享
Jan 10 PHP
eaglephp使用微信api接口开发微信框架
Jan 09 PHP
php中文验证码实现示例分享
Jan 12 PHP
Laravel 5.0 发布 新版本特性详解
Feb 10 PHP
php利用header函数下载各种文件
Aug 24 PHP
PHP版微信小店接口开发实例
Nov 12 PHP
Laravel中的Auth模块详解
Aug 17 PHP
PHP getNamespaces()函数讲解
Feb 03 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
Dec 20 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
ThinkPHP3.1新特性之命名范围的使用
2014/06/19 PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
2019/10/25 PHP
一些常用弹出窗口/拖放/异步文件上传等实用代码
2013/01/06 Javascript
Js表格万条数据瞬间加载实现代码
2014/02/20 Javascript
js判断元素是否隐藏的方法
2014/06/09 Javascript
jquery bind(click)传参让列表中每行绑定一个事件
2014/08/06 Javascript
JQuery使用$.ajax和checkbox实现下次不在通知功能
2015/04/16 Javascript
跟我学习javascript的定时器
2015/11/19 Javascript
javascript实现网站加入收藏功能
2015/12/16 Javascript
浅谈JS使用[ ]来访问对象属性
2016/09/21 Javascript
jQuery插件zTree实现获取一级节点数据的方法
2017/03/08 Javascript
B/S(Web)实时通讯解决方案分享
2017/04/06 Javascript
微信小程序 支付后台java实现实例
2017/05/09 Javascript
Vue下的国际化处理方法
2017/12/18 Javascript
JS实现使用POST方式发送请求
2019/08/30 Javascript
vue源码中的检测方法的实现
2019/09/26 Javascript
python if not in 多条件判断代码
2016/09/21 Python
Python探索之创建二叉树
2017/10/25 Python
Django使用httpresponse返回用户头像实例代码
2018/01/26 Python
python mysql断开重连的实现方法
2019/07/26 Python
基于django 的orm中非主键自增的实现方式
2020/05/18 Python
CSS3 实现时间轴动画
2020/11/25 HTML / CSS
基于HTML5+tracking.js实现刷脸支付功能
2020/04/16 HTML / CSS
迪奥官网:Dior.com
2018/12/04 全球购物
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的
2015/07/24 面试题
小学学习雷锋活动总结
2014/07/03 职场文书
乡镇党建工作汇报材料
2014/08/14 职场文书
小学生志愿者活动方案
2014/08/23 职场文书
2014年采购工作总结
2014/11/20 职场文书
清明节扫墓活动总结
2015/02/09 职场文书
2015年远程教育工作总结
2015/05/20 职场文书
2016继续教育培训学习心得体会
2016/01/19 职场文书
家访教师心得体会
2016/01/23 职场文书
五年级作文之成长
2019/09/16 职场文书
《工作是最好的修行》读后感3篇
2019/12/13 职场文书
nginx location 带斜杠【 / 】与不带的区别
2022/04/13 Servers