首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何实现用户的发帖限制?

如何实现用户的发帖限制?
EN

Stack Overflow用户
提问于 2009-10-22 12:03:10
回答 4查看 105关注 0票数 0

一个用户一天内最多只能发布4次。

困难的是如何在数据库中开始一天?我使用的是MySQL

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-10-22 12:05:01

这将获得基于今天的记录:

代码语言:javascript
复制
SELECT * FROM whatever WHERE date(datefield) = CURdate();
票数 1
EN

Stack Overflow用户

发布于 2009-10-22 12:18:00

如果你把他的TimeZone存储起来会更好。世界上不同地区的人们有不同的时间,所以一天的开始对每个人来说都是不同的。

您可以获取当前日期和当前时间。查看在这一特定的一天,从一天的00:00开始已经发布了多少帖子。如果数字等于4,则告诉用户他已达到最大限制。

使用NOW()获取当前日期和时间

代码语言:javascript
复制
mysql> SELECT NOW();
+---------------------+
| NOW()               |
+---------------------+
| 2009-10-22 10:49:15 |
+---------------------+
1 row in set (0.00 sec)

您必须知道您的服务器位于哪个时区,然后将时间设为UTC,然后添加/减去时间以获得用户的本地时间。

您可能想看看MySQL Data and time Reference

如何在数据库中开始一天

这应该不是问题,就像我说的,从DB获取当前时间,调整您的时间差,使时间UTC。然后调整用户的时区,使时间与他的时区一致。

例如3:30(服务器时间)-1:00(服务器时区)+5:30(用户时区)= 8:00 (用户时间)

因此,此用户一天的开始时间为00:00,而此用户的时间为8小时。

注意:注意时差。例如2:30 - 3:30 = -1:00,意思是前一天的23:00。也要考虑到这一点。

票数 2
EN

Stack Overflow用户

发布于 2009-10-22 12:09:22

代码语言:javascript
复制
SELECT datetime FROM posts ORDER BY date LIMIT 3,1

if now - datetime >= 86400:            // pick one
if datetime.datepartonly < today:
    allow posting
else:
    deny posting

如果您确定MySQL服务器的时间设置正确:

代码语言:javascript
复制
SELECT COUNT(*) FROM posts WHERE DATE_SUB(NOW(), 1 day) <= datetime; // OR
SELECT COUNT(*) FROM posts WHERE CURRENT_DATE() <= datetime;
if count < 4:
    allow
else:
    deny
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1604951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档