PHP+Session防止表单重复提交的解决方法


Posted in PHP onApril 09, 2018

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

 代码如下

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

4. 设置token值

 代码如下

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

总结

以上所述是小编给大家介绍的PHP+Session防止表单重复提交的解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
从网上搜到的phpwind 0day的代码
Dec 07 PHP
php将access数据库转换到mysql数据库的方法
Dec 24 PHP
php+xml编程之SimpleXML的应用实例
Jan 24 PHP
php动态生成缩略图并输出显示的方法
Apr 20 PHP
php curl 获取https请求的2种方法
Apr 27 PHP
PHP函数func_num_args用法实例分析
Dec 07 PHP
php获取一定范围内取N个不重复的随机数
May 28 PHP
详解Laravel视图间共享数据与视图Composer
Aug 04 PHP
解析 thinkphp 框架中的部分方法
May 07 PHP
php微信开发之音乐回复功能
Jun 14 PHP
Laravel Eloquent ORM 多条件查询的例子
Oct 10 PHP
Laravel 微信小程序后端搭建步骤详解
Nov 26 PHP
PHP创建自己的Composer包方法
Apr 09 #PHP
Bootstrap+PHP实现多图上传功能实例详解
Apr 08 #PHP
PHP实现的获取文件mimes类型工具类示例
Apr 08 #PHP
PHP面向对象之里氏替换原则简单示例
Apr 08 #PHP
PHP面向对象五大原则之依赖倒置原则(DIP)详解
Apr 08 #PHP
PHP面向对象五大原则之里氏替换原则(LSP)详解
Apr 08 #PHP
PHP实现微信红包金额拆分试玩的算法示例
Apr 07 #PHP
You might like
古巴咖啡 Cubita琥爵咖啡 独特的加勒比海风味咖啡
2021/03/06 新手入门
PHP 输出简单动态WAP页面
2009/06/09 PHP
发一个php简单的伪原创程序,配合商城采集用的
2010/10/12 PHP
PHP中获取变量的变量名的一段代码的bug分析
2011/07/07 PHP
thinkphp的URL路由规则与配置实例
2014/11/26 PHP
thinkphp制作404跳转页的简单实现方法
2016/09/22 PHP
详解PHP安装mysql.so扩展的方法
2016/12/31 PHP
PHP使用标准库spl实现的观察者模式示例
2018/08/04 PHP
在JavaScript里嵌入大量字符串常量的实现方法
2013/07/07 Javascript
jQuery .tmpl() 用法示例介绍
2014/08/21 Javascript
JS倒计时代码汇总
2014/11/25 Javascript
jQuery结合ajax实现动态加载文本内容
2015/05/19 Javascript
jQuery元素属性操作实例(设置、获取及删除元素属性)
2016/09/08 Javascript
js实现常见的工具条效果
2017/03/02 Javascript
jQuery.Sumoselect插件实现下拉复选框效果
2017/11/09 jQuery
手把手带你封装一个vue component第三方库
2019/02/14 Javascript
layui实现checkbox的目录树tree的例子
2019/09/12 Javascript
解决vue elementUI 使用el-select 时 change事件的触发问题
2020/11/17 Vue.js
[01:35:13]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第一场 1月18日
2021/03/11 DOTA
PyCharm 常用快捷键和设置方法
2017/12/20 Python
Python中使用pypdf2合并、分割、加密pdf文件的代码详解
2019/05/21 Python
django 2.2和mysql使用的常见问题
2019/07/18 Python
python 修改本地网络配置的方法
2019/08/14 Python
python gui开发——制作抖音无水印视频下载工具(附源码)
2021/02/07 Python
html5指南-6.如何创建离线web应用程序实现离线访问
2013/01/07 HTML / CSS
BookOutlet加拿大:在网上书店购买廉价折扣图书和小说
2018/10/05 全球购物
2014全国两会大学生学习心得体会
2014/03/10 职场文书
创业融资计划书
2014/04/25 职场文书
领导班子四风表现材料
2014/08/23 职场文书
公务员党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
护士求职自荐信
2015/03/25 职场文书
学历证明范文
2015/06/16 职场文书
某某店铺的开业庆典主持词范本
2019/11/25 职场文书
MySql开发之自动同步表结构
2021/05/28 MySQL
5个pandas调用函数的方法让数据处理更加灵活自如
2022/04/24 Python
阿里云服务器Ubuntu 20.04上安装Odoo 15
2022/05/20 Servers