Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过PHP限制活动_Php_Security_Spam - Fatal编程技术网

通过PHP限制活动

通过PHP限制活动,php,security,spam,Php,Security,Spam,我有一个社交网络,允许用户发布博客、提问和留言。我们有一个关于垃圾邮件的小问题。例如,我们让用户注册,每分钟写大约6篇博客,试图卖东西 我正在寻找一种通过用户id限制这些活动的快速方法,比如说只允许他们每天发布3个博客 我将用户存储在$auth变量中,并通过OOP将其按$auth->id显示,例如,更具体地说 正在寻找通过php实现这一点的快速、简单的方法 提前感谢/**编辑*****/ 到目前为止,这就是我所拥有的,我确信美元太多了,这是应该的,但出于某种原因,我的声明并没有阻止第四个博客的发

我有一个社交网络,允许用户发布博客、提问和留言。我们有一个关于垃圾邮件的小问题。例如,我们让用户注册,每分钟写大约6篇博客,试图卖东西

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

我将用户存储在$auth变量中,并通过OOP将其按$auth->id显示,例如,更具体地说

正在寻找通过php实现这一点的快速、简单的方法

提前感谢/**编辑*****/

到目前为止,这就是我所拥有的,我确信美元太多了,这是应该的,但出于某种原因,我的声明并没有阻止第四个博客的发布。代码是否合适。然而,如果它们是手动输入的,那么阻止它们的作用很小。无论如何,没有理由不能实现这两种方法

我假设您的blogs表中有一个已创建的字段。在允许发布其他博客之前,只需查询表中包含今天日期的博客数量。不确定您使用的是什么数据库/API。在MySQL中,您可以执行以下操作:

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

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

当张贴时,执行以下操作:

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

…或者你可以使用别人提到的验证码。这就是他们的目的。真的,你应该在注册过程中有一个…

我承认我对PHP编程几乎一无所知,但是CAPTCHA的另一个选择或补充是使用诸如


有一个例子不知道它有多好,因为我还没有编写PHP代码:

也许更好的办法是在注册或发布博客时实施验证码,这肯定会减少机器人垃圾邮件的数量我们有验证码,但这些部分没有。这会有帮助,也会有帮助,但这些都是手动用户。+1因为我没有足够的游戏来添加我的验证码注释作为部分答案,重新验证码是一个很好的答案。我在注册和其他地方有验证码,但仍然没有停止手动spamming@LightningWrist你需要一个更好的验证码。试试看,我用的是reCaptcha。这不是验证码问题。它正在做它的工作。我在问如何限制。完全独立的问题。完全披露:我是StopForumSpam版主,我们在这里也有一些贡献:-加上官方文档,这些文档也正在由目前API使用的工作人员重新编写以澄清: