PHP服务器端防止用户重复提交数据

<? 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值