问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

php 提交表单到当前页面如何防止页面刷新重复提交~

发布网友 发布时间:2022-04-06 01:14

我来回答

3个回答

懂视网 时间:2022-04-06 05:35

php页面禁止刷新的方法:首先直接退出代理IP;然后设置刷新的时间段和次数,防止快速刷新;接着设置监控变量,并处理监控结果;最后跳转至攻击者服务器地址即可。

php页面禁止刷新的方法:

方法1:

一小段代码实现页面防刷新,可能没有太大的用途,只是一个思路,供参考。

原理:

在页面访问时判断是否有session,没有的话直接创建一个session,并设置为当前时间,程序正常向下执行;

如果有session,判断 session里的时间和当前时间的时间差,如果间隔小于规定的时间,如本例的5分钟,则中断程序执行并提示错误信息;

如果session里的时间大于当 前的时间,则刷新session中的时间,页面正常执行。

代码如下:

session_start(); //启动session
$timeOutLimit = "300"; //设置时间间断五分钟
if (isset($_SESSION["timeout"])) { //判断是否有session
 if (time() - $_SESSION["timeout"] < $timeOutLimit) { 
 //如果有session 且session时间间隔小于5分钟 直接die()退出并输出提示信息。
 die("请不要多次刷新当前页面");
 } else { //如果没有超时,将session时间重置为当前时间。
 $_SESSION["timeout"] = time();
 }
} else {
 $_SESSION["timeout"] = time(); 
 //如果没有timeout的session,则创建session为当前时间,便于下次访问页面时判断
}
//其它页面代码.....

方法2:

//代理IP直接退出
empty($_SERVER['HTTP_VIA']) or exit('Access Denied');
//防止快速刷新
session_start();
$seconds = '3'; //时间段[秒]
$refresh = '5'; //刷新次数
//设置监控变量
$cur_time = time();
if(isset($_SESSION['last_time'])){
 $_SESSION['refresh_times'] += 1;
}else{
 $_SESSION['refresh_times'] = 1;
 $_SESSION['last_time'] = $cur_time;
}
//处理监控结果
if($cur_time - $_SESSION['last_time'] < $seconds){
 if($_SESSION['refresh_times'] >= $refresh){
 //跳转至攻击者服务器地址
 header(sprintf('Location:%s', 'http://127.0.0.1'));
 exit('Access Denied');
 }
}else{
 $_SESSION['refresh_times'] = 0;
 $_SESSION['last_time'] = $cur_time;
}

想了解更多编程学习,敬请关注php培训栏目!

热心网友 时间:2022-04-06 02:43

最常用的方法就是利用token。即:
1、在生成页面的时候生成一个token(随机字符串),并把它同时写入表单的某个hidden中,和服务端的session中。
2、客户端提交表单到服务器时,比对表单中的token与session中的token是否一致。若不一致则认为是无效的请求。
3、不管第2步的校验是否通过,token只要使用一次后就立即作废(即:从session中销毁)。同时token也可以关联时间信息,超时后也自动作废。

这样,即便客户端重复提交,也只有第一次的请求能够成功。

热心网友 时间:2022-04-06 04:01

可以在当前页面里设置一个变量,通过这个变量来确定是否已经提交了,如果提交过了就不再提交。


示例代码:

<script language="javascript"> 
var checkSubmitFlg = false; 

function checkSubmit(){ 
if(checkSubmitFlg ==true){ 
  return false; //当表单被提交过一次后checkSubmitFlg将变为true,根据判断将无法进行提交。 

checkSubmitFlg ==true; 
return true; 

< /script > 

< form name="form1" method="post" onsubmit="return checkSubmit();"> 
………..
< /form>

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
在RLC电路中,谐振频率为___同期为___谐振条件为___? 电磁振荡并联 RLC振荡回路的谐振频率与振荡特性 佛手柑水培还是干放 中山市美派电器有限公司怎么样? 成都美派电器有限公司怎么样? 两条不同品牌的DDR3内存条可以一起用吗 驾驶证的牡丹卡多长时间能办下来 新衣服必须用洗衣液洗才能去甲醛吗? 梦见逛街被偷抢 2024年买什么品牌的运动男鞋比较好? php的公共类是如何做到url变更而页面不刷新的? PHP如何防止页面被频繁刷新 用php语言写程序,怎样防止刷新页面? 开发过程中,如何查看 php扩展的详细i错误信息? 如何诊断这里PHP分段错误 如何查看php-fpm core dump 文件的错误 服务器上的php项目访问不了,怎么查看错误 如何找到php代码出错位置 你是如何发现线上PHP运行中的错误呢? 如何查看服务器上的php错误日志 php代码错误检查 在PHP中检查PHP文件是否有语法错误的方法 遍历数组时如何优雅的修改键值 php 数组键值替换问题,如何在替换键值的同时,保持数组的原序? php 二维数组,怎么替换子数组中的某个键值? 这个二维数据是我通过数据库查询出来的list, php中改变数组键值 php中如何给一个数组集的每个数组重新赋予其键为0,1,2... PHP html如何实现进入一个网页后自动跳转到多个网站 PHP下载文件后,如何实现页面跳转啊 - 技术问答 怎样设置php网站程序是utf-8编码? php 网站怎么做到,不刷新页面,实时自动跟新数据 怎样使php在执行的时候弹出对话框,并且使当前页面不刷新。 php中如何防止刷新一次提交一次 php如何避免刷新页面重复提交 php如何防止用户刷新页面,频繁写入文件 自己写了一个个人网站用的小插件,赞,鄙视, 利用txt做 怎样用php禁用F5刷新页面 php 如何避免刷新页面重复插入数据到数据库 在php页面中,有什么办法可以点击某个按钮以后就执行页面中的部分php代码,注意*不能刷新页面 PHP怎么防刷新文章点击数 PHP避免刷新页面重复提交 php页面刷新问题 PHP怎么在该页面增加自动刷新,并且只刷新一次,下一次不刷新 PHP中执行删除一行数据代码怎么写? php中删除记录 php如何删除数据库中重复的数据 并显示整理后的数据 php删除记录的问题 php删除数据不成功,是怎么回事 新建的“PHP网页”打不开 网站建站系统是akcms系统,经常出现PHP网页页面打不开的问题,该怎么解决? PHP网站打不开,报错问题,高手来解答?