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

2.核心代码

显示的逻辑:

bash 复制代码
//获取防止刷新的唯一标识符,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.类的方法

bash 复制代码
<?php

class db_url
{
    static public $status_arr = array(
    );


    //获取请求的url
    static 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;
    }
}


?>
相关推荐
linx2952 分钟前
单元七 · 零基础路线图-第 1–3 周·变量、类型与字符串
c语言·开发语言·数据结构·c++·算法
geovindu9 分钟前
java: Strategy Pattern
java·开发语言·后端·设计模式·策略模式·行为模式
念越15 分钟前
Python基础语法(一):变量、类型与程序控制流
开发语言·网络·python
资讯综合32 分钟前
2026全国云渲染网站排名 不同需求用户适配榜单
开发语言·前端·javascript
aramae33 分钟前
模拟实现strcpy(字符串拷贝)(C语言)
java·c语言·开发语言·算法
PHP实战开发录1 小时前
PHP接口超时后为什么任务还在跑
开发语言·前端·php·开发
m0_734571761 小时前
深入理解C++ 构造函数<十一> initializer_list 构造
开发语言·c++
数据狐(Datafox)1 小时前
京东商品详情API接口解析(附 JSON 样例)
java·开发语言·json
Wang's Blog1 小时前
Java框架快速入门: Spring Security+OAuth2之深度定制UserDetailsService与密码无缝升级
java·开发语言·spring
白远山1 小时前
智慧场馆解决方案小程序系统开发实战与架构设计指南
java·开发语言·小程序·架构