2011-11-30 69 views
0

我有一个社交网络,允许用户发布博客,提问和留言。我们在发送垃圾邮件时遇到了一些小问题。例如,我们有用户注册,并试图出售东西,每分钟写出6个博客。通过PHP限制活动

我正在寻找一种快速方法来限制这些活动的用户id,比方说,只允许他们每天发布3个博客。

我将用户存储在$auth变量中,并通过OOP将它们提升为$auth->id以便更具体。

寻找一个快速,简单的方法来做到这一点通过PHP。

由于事先/ **编辑* ****/

这是我到目前为止,我知道肯定$太多计数,因为它应该,但由于某种原因,我的if(statement未停止发布第四篇博客。 HERE是代码

+3

也许一个更好的主意是执行上注册或上发布博客一个CAPTCHA要么,那肯定会减少我们已经验证过的机器人垃圾邮件 – Skuld

+0

的数量,但这些数据并不适用于这些部分。这会有所帮助,而且会做,但这些都是手动用户。 – LightningWrist

回答

3

类似CAPTCHA将是适当的。但是,如果他们手动输入,那么阻止他们就没有多大用处。无论如何,没有理由不能实现这两种方法。

我假设你的博客表中有一个created字段。只需在表格中查询当前日期的博客数量,然后再发布另一个博客。不确定你正在使用的数据库/ API。在MySQL中,您可以执行以下操作:

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

+1原因我还没有足够的游戏来添加我的CAPTCHA评论作为部分答案,重新验证码是一个好的 – Skuld

2

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

1

当柱子是,这样做:

// 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!"; 
} 

...或者你可以只使用一个CAPTCHA(如其他人所说)。这就是他们的目的。真的,你应该有一个在注册过程中...

+0

我有一个验证码在注册和其他地方,仍然不会停止手动发送垃圾邮件 – LightningWrist

+0

@LightningWrist你那么需要更好的CAPTCHA。尝试[reCAPTCHA](http://www.google.com/recaptcha)。 – DaveRandom

+0

我使用reCaptcha。这不是一个验证码问题。它正在做它的工作。我在问如何限制。完全分开的问题。 – LightningWrist

1

我承认我旁边没有关于PHP编程知道,但另一种选择(或除CAPTCHA)是使用一种服务,例如StopForumSpam

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

+0

(全面披露:我是StopForumSpam版主)我们也有一些贡献可以在这里找到:http://www.stopforumspam.com/contributions-加上官方文档(为了目前工作人员的清晰, )在这里使用API​​:http://www.stopforumspam.com/usage – damianb