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

有没有办法限制php表单的提交数量?,php,forms,submission,Php,Forms,Submission,注册表单只能使用x次?如果您通过ajax提交表单,这是一个很好的资源。如果您通过ajax提交表单,这是一个很好的资源。是。让表单处理页面记录到数据库中它被使用了多少次,并让它在记录x次使用时禁用表单。是。让表单处理页面记录到数据库中它被使用了多少次,并让它在记录x次使用时禁用表单。使用x次,我想你实际上是指提交x次。您可以拥有一个会话计数器,该计数器在每次提交表单时递增,并且未通过验证,并且在达到限制时阻止进一步的提交尝试。使用x次,我猜您实际上是指提交x次。您可以拥有一个会话计数器,该计数器在

注册表单只能使用x次?

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

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

是。让表单处理页面记录到数据库中它被使用了多少次,并让它在记录x次使用时禁用表单。

是。让表单处理页面记录到数据库中它被使用了多少次,并让它在记录x次使用时禁用表单。

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

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

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

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

PHP快速而肮脏的解决方案

每次他们访问一个页面时,计数器都会递增。次数过多表示页面
die()
s。您可以选择将此代码放在一个只有在有人提交表单时才会执行的位置

它每隔一段时间重置一次计数

已知错误:清除Cookies会破坏它,让Cookies脱落会破坏它

<?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");
   }
}

快速而肮脏的PHP解决方案

每次他们访问一个页面时,计数器都会递增。次数过多表示页面
die()
s。您可以选择将此代码放在一个只有在有人提交表单时才会执行的位置

它每隔一段时间重置一次计数

已知错误:清除Cookies会破坏它,让Cookies脱落会破坏它

<?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");
   }
}

你为什么要这么做?你为什么要这么做?