【问题标题】:Limiting activity via PHP通过 PHP 限制活动
【发布时间】:2012-01-09 21:53:05
【问题描述】:

我有一个社交网络,允许用户发布博客、提问和发送消息。我们在垃圾邮件方面遇到了一个小问题。例如,我们让用户注册,然后每分钟写大约 6 个博客试图推销东西。

我正在寻找一种通过用户 ID 限制这些活动的快速方法,假设只允许他们每天发布 3 个博客。

我将用户存储在 $auth 变量中,并通过 OOP 将它们通过 $auth->id 提出来,例如更具体。

正在寻找一种通过 php 快速、简单的方法。

提前致谢 /**编辑*****/

这就是我目前所拥有的,我确信 $too many is counted as it should,但出于某种原因,我的if(statement 并没有阻止第四个博客的发布。 HERE 是代码

【问题讨论】:

  • 也许更好的主意是在注册或发布博客时实施验证码,这肯定会减少机器人垃圾邮件的数量
  • 我们有验证码,但这些部分没有。这会有所帮助,而且会有所帮助,但这些都是手动用户。

标签: php security spam


【解决方案1】:

CAPTCHA 这样的东西是合适的。但是,如果它们是手动输入的,则几乎无法阻止它们。无论如何,你没有理由不能同时实现这两种方法。

我假设您的 blogs 表中有一个 created 字段。只需在表中查询具有今天日期的博客数量,然后再允许发布另一个。不确定您使用的是什么数据库/API。在 MySQL 中,你可以这样做:

SELECT COUNT(*) 
FROM blogs 
WHERE user_id = USERID 
AND DATE(created) = '2011-11-30'

【讨论】:

  • +1 因为我的游戏不够好,无法将我的验证码评论添加为部分答案,重新验证码是一个不错的选择
【解决方案2】:

当用户撰写并提交帖子时,将他们发布的日期保存在帖子的表格中。选择并计算他们今天发布的次数。如果他们在他们的限制之下,允许发布或者给他们错误/警告信息。

【讨论】:

    【解决方案3】:

    发布帖子后,请执行以下操作:

    // Get last post time and number of posts today from database
    $query = "SELECT
                last_post,
                posts_today
              FROM
                users
              WHERE
                id = '$auth->id'";
    $result = mysql_fetch_assoc(mysql_query($query));
    
    // See if this is the first post today
    $isNewDay = date('Y-m-d') != date('Y-m-d',strtotime($result['last_post']));
    $postsToday = ($isNewDay) ? 0 : (int) $result['posts_today'];
    
    // Only add post if user is allowed
    if ($isNewDay || $postsToday < 3) {
      /*
        Add the post to the database here
      */
      // Update the number of posts today in the database
      $query = "UPDATE
                  users
                SET
                  last_post = '".date('Y-m-d H:i:s')."',
                  posts_today = '".($postsToday + 1)."'
                WHERE
                  id = '$auth->id'";
      mysql_query($query);
    } else {
      echo "You have already made 3 posts today!";
    }
    

    ...或者您可以只使用验证码(正如其他人所提到的)。这就是他们的目的。真的,您应该在注册过程中拥有一个...

    【讨论】:

    • 我在注册和其他地方确实有验证码,但仍然无法阻止手动发送垃圾邮件
    • @LightningWrist 那么你需要一个更好的验证码。试试reCAPTCHA
    • 我使用 reCaptcha。这不是验证码问题。它正在做它的工作。我想问怎么限制。完全独立的问题。
    【解决方案4】:

    我承认我对 PHP 编程几乎一无所知,但另一种选择(或对 CAPTCHA 的补充)是使用诸如 StopForumSpam 之类的服务

    有一个 how to use it here 的例子(不知道它有多好,因为我还没有编写 PHP 代码):)

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-17
    • 1970-01-01
    • 2011-08-19
    • 1970-01-01
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多