博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP服务器端防止用户重复提交数据
阅读量:7289 次
发布时间:2019-06-30

本文共 1235 字,大约阅读时间需要 4 分钟。

<?
php
session_start
();
/*
*
     * 检查表单是否被重复提交
     * 相同内容的表单在设定时间内只能提交1次
     * @param int $iTimeOffset
     * @return bool
     
*/
function
 checkFormSubmit(
$iTimeOffset
=
60
){
    
//
 取得表单的标识
    
$idForm
 
=
 
md5
(
serialize
(
$_POST
));
    
//
 是否需要表单提交检察
    
$iFormCheck
 
=
 
true
;
    
if
 (
isset
(
$_SESSION
[
'
formSubmitCheck
'
])){
        
//
 删除过期的表单标识
        
foreach
 (
array_keys
(
$_SESSION
[
'
formSubmitCheck
'
]) 
as
 
$val
){
            
if
 (
time
() 
>
 
$val
){
                
unset
(
$_SESSION
[
'
formSubmitCheck
'
][
$val
]);
            }
        }
    }
else
 {
        
$_SESSION
[
'
formSubmitCheck
'
=
 
array
();
        
$iFormCheck
 
=
 
false
;
    }
    
if
 (
$iFormCheck
 
==
 
true
){
        
//
 检查是否有重复标识的提交记录
        
foreach
 (
$_SESSION
[
'
formSubmitCheck
'
as
 
$val
){
            
if
 (
$val
 
==
 
$idForm
){
                
return
 
false
;
            }
        }
    }
    
//
 保存表单标识
    
$_SESSION
[
'
formSubmitCheck
'
][(
time
()
+
$iTimeOffset
)] 
=
 
$idForm
;
    
return
 
true
;
}
if
 (
count
(
$_POST
>
 
0
){
    
if
 (checkFormSubmit()
===
true
){
        
echo
 
'
表单提交成功
'
;
    }
else
 {
        
echo
 
'
表单重复提交
'
;
    }
}
?>
<
form method
=
"
POST
"
>
    
<
input type
=
"
text
"
 name
=
"
a
"
>
    
<
input type
=
"
text
"
 name
=
"
b
"
>
    
<
textarea name
=
"
c
"
></
textarea
>
    
<
input type
=
"
submit
"
 name
=
"
btnSubmit
"
 value
=
"
确认
"
>
</
form
>
<?
php
var_dump
(
$_POST
);
var_dump
(
$_SESSION
);
?>

转载于:https://www.cnblogs.com/200831856/archive/2008/12/11/1353172.html

你可能感兴趣的文章
cocos2d-x之监听手机的物理按键
查看>>
python数据处理excel和pdf,并打包成exe
查看>>
基于 HTML5 WebGL 的低碳工业园区监控系统
查看>>
如何使绝对定位内部元素不继承父级宽度,而是靠内容自动撑开宽度(转载)
查看>>
《程序猿的生命周期》阅读有感
查看>>
重温排序算法
查看>>
Instrumentation 功能介绍(javaagent)
查看>>
Core J2EE Patterns - Data Access Object
查看>>
SpringCloud学习成长之路 六 cloud配置中心
查看>>
MyEclipse定位class文件
查看>>
STM32(HY-SRF05)超声波测距项目
查看>>
《practical Java》读书笔记
查看>>
数据库字段顺序的【坑】
查看>>
spring5新响应式框架-webflux实战
查看>>
软甲架构笔记 三
查看>>
STL training (uva上一些比较好的用来熟悉STL)
查看>>
[未完成]关于CSS的总结
查看>>
陈皓一起写Makefile 概述
查看>>
linux下安装启动rpc服务
查看>>
Software Testing, Lab 1
查看>>