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

时间:2009-08-15 08:29:30

标签: php forms submission

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

5 个答案:

答案 0 :(得分:2)

PHP的快速和肮脏的解决方案。

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

它经常重置计数。

已知的错误:清除Cookies会破坏它,让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");
   }
}

这是您希望每用户解决方案。如果它是一个完整的网站,只需评论,我会删除。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

如果您通过ajax this提交表单是一个相当不错的资源。

答案 4 :(得分:0)

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