通过PHP限制活动
我有一个社交网络,允许用户发布博客、提问和留言。我们有一个关于垃圾邮件的小问题。例如,我们让用户注册,每分钟写大约6篇博客,试图卖东西 我正在寻找一种通过用户id限制这些活动的快速方法,比如说只允许他们每天发布3个博客 我将用户存储在$auth变量中,并通过OOP将其按$auth->id显示,例如,更具体地说 正在寻找通过php实现这一点的快速、简单的方法 提前感谢/**编辑*****/ 到目前为止,这就是我所拥有的,我确信美元太多了,这是应该的,但出于某种原因,我的声明并没有阻止第四个博客的发布。代码是否合适。然而,如果它们是手动输入的,那么阻止它们的作用很小。无论如何,没有理由不能实现这两种方法 我假设您的blogs表中有一个已创建的字段。在允许发布其他博客之前,只需查询表中包含今天日期的博客数量。不确定您使用的是什么数据库/API。在MySQL中,您可以执行以下操作:通过PHP限制活动,php,security,spam,Php,Security,Spam,我有一个社交网络,允许用户发布博客、提问和留言。我们有一个关于垃圾邮件的小问题。例如,我们让用户注册,每分钟写大约6篇博客,试图卖东西 我正在寻找一种通过用户id限制这些活动的快速方法,比如说只允许他们每天发布3个博客 我将用户存储在$auth变量中,并通过OOP将其按$auth->id显示,例如,更具体地说 正在寻找通过php实现这一点的快速、简单的方法 提前感谢/**编辑*****/ 到目前为止,这就是我所拥有的,我确信美元太多了,这是应该的,但出于某种原因,我的声明并没有阻止第四个博客的发
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使用的工作人员重新编写以澄清: