当前位置: 首页 > news >正文

php防止页面重复刷新或者重复提交

2.核心代码

显示的逻辑:

//获取防止刷新的唯一标识符,start
$intFlag = substr(md5(time()),6);
$strFlag = 'BAOXIAOSS_'.$my_user_id.$intFlag;
$smarty->assign('check_is_agin_post', $strFlag);
//获取防止刷新的唯一标识符,end注意:前端页面提交加入这个变量。下面是提交的逻辑//校验是否重复提交,start
if(!empty($post_data['check_is_agin_post']))
{$check_is_agin_post = $_COOKIE[$post_data['check_is_agin_post']];if(!empty($check_is_agin_post)){die('提交重复');}setcookie($post_data['check_is_agin_post'], 1, time()+10);
}
//校验是否重复提交,end$request_url = db_url::getRequestUrlData();
$links = array(array('href' =>$request_url['HTTP_REFERER'], 'text' => '返回')
);

3.类的方法

<?phpclass db_url
{static public $status_arr = array();//获取请求的urlstatic function getRequestUrl(){//获取当前完整url,为了清晰,多定义几个变量,分几行写$scheme = $_SERVER['REQUEST_SCHEME']; //协议$domain = $_SERVER['HTTP_HOST']; //域名/主机$requestUri = $_SERVER['REQUEST_URI']; //请求参数//将得到的各项拼接起来$currentUrl = $scheme . "://" . $domain . $requestUri;return $currentUrl; //传回当前url}//返回请求URl的多个数据static function getRequestUrlData(){//获取当前完整url,为了清晰,多定义几个变量,分几行写$scheme = $_SERVER['REQUEST_SCHEME']; //协议$domain = $_SERVER['HTTP_HOST']; //域名/主机$requestUri = $_SERVER['REQUEST_URI']; //请求参数//将得到的各项拼接起来$currentUrl = $scheme . "://" . $domain . $requestUri;$return_data = ['REQUEST_SCHEME'=>$_SERVER['REQUEST_SCHEME'],'HTTP_HOST'=>$_SERVER['HTTP_HOST'],'HTTP_REFERER'=>$_SERVER['HTTP_REFERER'],'REQUEST_URI'=>$_SERVER['REQUEST_URI'],'url'=>$currentUrl,];return $return_data; //传回当前url}//获取url的参数返回数组static function getParams($url){$arr = parse_url($url);$arr_query = self::convertUrlQuery($arr['query']);return $arr_query?$arr_query:[];}static function convertUrlQuery($query){$queryParts = explode('&', $query);$params = array();foreach ($queryParts as $param) {$item = explode('=', $param);$params[$item[0]] = $item[1];}return $params;}/*** 将参数变为字符串* @param $array_query* @return string string 'm=content&c=index&a=lists&catid=6&area=0&author=0&h=0&region=0&s=1&page=1' (length=73)*/static function getUrlQuery($array_query){$tmp = array();foreach($array_query as $k=>$param){$tmp[] = $k.'='.$param;}$params = implode('&',$tmp);return $params;}
}?>
http://www.lryc.cn/news/424395.html

相关文章:

  • Springboot3 配置sql打印到控制台
  • 深入理解 GO 语言并发
  • leetcode39组合总和
  • 【JPCS独立出版,EI稳定检索】2024年工业机器人与先进制造技术国际学术会议(IRAMT 2024,9月27-29)
  • Fal.ai Flux 1-Pro/Viva.ai/哩布哩布AI:AI绘图部分免费工具+原图提示词Prompt
  • C++学习笔记----2、使用C++进行优雅编程(十)---- 格式化
  • 双指针| Java | (hot100) 力扣283, 11, 15, 42做题总结
  • matlab求解方程
  • MySQL基础--视图,存储过程
  • 学习记录第二十六天
  • Polars简明基础教程十一:可视化(一)
  • 实战项目:贪吃蛇游戏的实现(上)
  • SHT30温湿度传感器全解析——概况,性能,MCU连接,样例代码
  • SQL server 同环比计算模板
  • python发送外部请求
  • c++并发编程面试题
  • K8S上安装LongHorn(分布式块存储) --use
  • 2024年前端技术发展趋势分析
  • spring boot 笔记大杂烩
  • 如何在香港云服务器上优化网站性能?
  • STM32低功耗与备用备份区域
  • 武汉某汽配公司携手三品软件 共绘PLM项目新蓝图
  • uniapp多图上传uni.chooseImage上传照片uni.uploadFile,默认上传9张图
  • MySQL——内置函数
  • 2024年最新版小程序云开发数据模型的开通步骤,支持可视化数据库管理,支持Mysql和NoSql数据库,可以在vue3前端web里调用操作
  • 智慧水库大坝安全监测预警系统解决方案
  • 基于SpringBoot+VUE的社区团购系统(源码+文档+部署)
  • LeetCode 3151. 特殊数组 I【数组】简单【Py3,C++,Java,GO,Rust】
  • 超级字符串技能:提升你的编码游戏
  • 米联客-FPGA程序设计Verilog语法入门篇连载-16 Verilog语法_时钟分频设计