0

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

4

5 回答 5

2

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

每次他们访问一个页面时,它都会增加计数器。太多次意味着 page 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");
   }
}

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

于 2009-08-16T05:10:05.753 回答
1

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

于 2009-08-15T08:32:56.577 回答
1

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

于 2009-08-15T08:39:45.360 回答
0

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

于 2009-08-16T05:02:58.313 回答
0

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

于 2009-08-15T08:32:30.820 回答