提交按钮的时间控制

时间:2011-11-12 23:56:21

标签: php forms

gustavotkg 最近分享了他的以下知识,以回应有关阻止访问者向文件提交多个企业的查询。他建议如下:

  

“如果您在onclick事件中禁用了提交按钮,则访问者为   必须刷新页面才能重新提交表单“。

     

您可以执行以下操作:

var btn = document.getElementById("button-id");
btn.onclick = function() {
    btn.disabled = 'disabled';
}

禁用该按钮提供了一个临时解决方案,实际上似乎很难阻止多个肠道。

这可以是暂时的 gustavotkg 建议的解决方案可以通过进一步启用提交按钮来辅助时间 期限比如一周或168小时?

1 个答案:

答案 0 :(得分:1)

这是一个展示所需功能的简单示例。

设置的Cookie的有效期为7天。单击该按钮时,onclick事件将检查cookie是否已设置,如果已设置,则会通过返回false来拒绝提交。否则,该函数设置cookie并允许提交通过。

请注意这是保证任何内容,因为任何(非新手)用户都可以删除其Cookie并重新提交条目。

<script type="text/javascript">
// Thanks to http://www.quirksmode.org/js/cookies.html
function createCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}    
</script>

<form action="#" method="POST">
    <input id="button-id" type="submit" value="Submit" />
</form>

<script type="text/javascript">
var btn = document.getElementById("button-id");
btn.onclick = function() {
    var cookie_name = 'submitted_entry';
    btn.disabled = 'disabled';
    if( readCookie( cookie_name))
    {
        alert( 'You can not submit an entry again!');
        return false;
    }
    else
    {
        createCookie( cookie_name, 1, 7);
    }
}

</script>