如果用户在1小时内发出超过5条评论,则重定向用户

时间:2011-08-30 23:41:57

标签: php mysql

我试图在用户尝试在1小时内提交超过5条评论时重新指导用户。

datecommented是时间戳。如果有{6}个评论在过去一小时内有loginid = '$uid'的时间戳,我希望重定向发生。

以下是我到目前为止所做的,但它不起作用。我怎样才能让它发挥作用?

谢谢,

约翰

$queryuidcount = "select loginid from comment where  (HOUR(NOW()) - HOUR(datecommented)) <= 1 AND loginid = '$uid'"; 
$uidresult = mysql_query($queryuidcount);

if (mysql_num_rows($uidresult) >= 6)
{

   session_write_close();
   header("Location:http://www.domain.com/directory/file.php");
   exit;

}

1 个答案:

答案 0 :(得分:4)

当您想要选择行数时,选择数据不是一个好主意,也不是将HOUR用于您想要做的事情。 HOUR()只是从时间戳返回小时,并不关心它发生的那一天。另外,通过您的解决方案,我可以在10:59发布5条评论,在11:00发布5条评论 这是您应该用来了解用户在过去一小时内发布的评论数量的查询:

SELECT COUNT(*) as num_comments
  FROM comment
 WHERE datecommented >= NOW() - INTERVAL 1 HOUR
   AND loginid = $uid;

这将返回一个包含一列num_comments的结果集。然后,您可以在PHP代码中进行验证并使用标题重定向,就像您现在一样。

您可以像通常使用PHP中的任何查询一样获取行:

// I assume $query contains the query above
$result_set = mysql_query($query) or exit(mysql_error());
$num_comments = mysql_result($result_set, 0); // fetch the first row of the result set

if ($num_comments >= 5) {
    // blablabla
}}