家园首页 Php4手册 我的相册 家园下载 个人文集 给我留言
我形我塑,网络相册,www.5x54.com 相册 相册 心情相册,少女相册 免费申请,我形我塑免费相册
 家园 个人文集   http://www.5x54.com
 


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


作者:网上收集    点击: 读取中...次    发布日期:2009-06-01.23:31

引用代码:[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);
?>[/php]

收藏此文章     打印此文章     编辑此文章    『关闭窗口』