我有一个网站,有几个请求选项(例如,添加照片,添加评论)。我想限制每个特定时间的使用请求,例如,他不能在一小时内发布超过5条评论,他每小时不能添加超过5张照片等。
我的想法是在每次发送表单操作时创建/更新会话变量,因此它的总和为5(如果会话变量为== 5,它将拒绝每个表单上的操作)。我的想法在我看来似乎很好,但我就是找不到在初始化后1小时重置某些会话变量的方法)。期待任何想法
发布于 2011-12-29 23:01:19
在SQL中使用简单的SQL命令,您可以获得过去一小时内完成的项目数,因此不需要使用会话变量(如果用户重置它的会话,该变量将会终止)
查看当前小时中某个特定元素的“发布”次数
SELECT
COUNT(*)
FROM
my_elements_table
WHERE
HOUR(createdon) = HOUR(NOW())
AND DATE(createdon) = CURDATE()
AND createdby = the_user_you_are_checking检查特定元素在过去一小时内的“past”数量
SELECT
COUNT(*)
FROM
my_elements_table
WHERE
DATE_ADD(createdon, INTERVAL 1 HOUR) > NOW()
AND createdby = the_user_you_are_checking显然,根据您的数据库字段和表调整SQL,但您应该有一个良好的起点。
发布于 2011-12-29 23:00:24
我猜你在数据库中存储了关于评论和照片的数据,至少你必须对评论做这件事,但我猜你对照片也是这样做的。在这种情况下,我将保存评论/照片创建时间的时间戳和创建它的用户的ID,以及其他信息。
当用户尝试添加另一张照片或评论时,您可以计算该特定用户在过去60分钟内在数据库中创建的评论和照片的数量。如果超过5,则丢弃请求,否则添加信息。
发布于 2011-12-29 23:00:26
如果你有用户,你会把他们存储在数据库中,不是吗?那么为什么不把他们最后一次评论的内容存储在数据库中,并用它来检查他们是否可以评论呢?
https://stackoverflow.com/questions/8669338
复制相似问题