有没有办法限制 php 表单的提交次数?

Posted

技术标签:

【中文标题】有没有办法限制 php 表单的提交次数?【英文标题】:Is there a way to limit number of submissions for a php form? 【发布时间】:2009-08-15 08:29:29 【问题描述】:

例如。一张注册表只能使用x次?

【问题讨论】:

一开始为什么要这样做? 【参考方案1】:

快速而肮脏的 php 解决方案。

每次他们访问一个页面时,它都会增加计数器。太多次意味着页面die()s。您可以选择将此代码放在仅当有人提交表单时才会执行的位置。

它会经常重置计数。

已知错误:清除 Cookie 会破坏它,关闭 cookie 会破坏它。

<?php

session_start();

if(!isset($_SESSION['count']))

   $_SESSION['count'] = 1;
   $_SESSION['first'] = time();

else

   // Increase the Count
   $_SESSION['count']++;
   // Reset every so often
   if($_SESSION['first'] < (time() - 500))
   
      $_SESSION['count'] = 1;
      $_SESSION['first'] = time();
   
   // Die if they have viewed the page too many times
   if($_SESSION['count'] > 100)
   
      die("You have submitted to many times");
   

这是因为您需要一个按用户的解决方案。如果是整个网站的事情,只需评论,我会删除。

【讨论】:

【参考方案2】:

是的。让表单处理页面向数据库记录它被使用的次数,并在记录 x 次使用时禁用表单。

【讨论】:

【参考方案3】:

使用 x 次我想你实际上是指提交 x 次。您可以有一个会话计数器,该计数器在每次提交表单并且未通过验证时递增,并在达到限制时阻止进一步的提交尝试。

【讨论】:

【参考方案4】:

如果您通过 ajax 提交表单,this 是一个很好的资源。

【讨论】:

【参考方案5】:

不幸的是,这里没有可靠的方法。最好的方法是存储 cookie,但显然他们可以清除 cookie。您可以尝试通过将(md5)他们的IP地址与其用户代理(浏览器等)组合来制作另一个唯一的字符串/ id,然后将其存储在数据库中,但这可能会拒绝一些不应该的人拒绝。

【讨论】:

以上是关于有没有办法限制 php 表单的提交次数?的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 中有没有办法限制对某个端点的访问,除非提交了前一页的表单?

php避免form表单重复提交

php.ini修改 表单提交大小限制 和 文件上传大小限制配置

PHP上传大文件解决办法

PHP实现IP访问限制及提交次数的方法详解

PHP实现IP访问限制及提交次数的方法详解