我知道这是一个基于意见的问题,但我需要你的意见。
在我的应用中,我想限制用户每天可以发送的邮件。起初我以为我会存储用户发送的第一条消息的日期,并限制他/她当天的消息。
但是用户位置和我的服务器位置之间的时差如何呢?因此,如果我的用户比服务器提前5个小时,则用户将无法发送任何消息,直到服务器时区到达第二天,这是从用户角度来看的5小时延迟。
如果我从手机中获取用户时区,他们可以更改时区并轻松突破限制。
那么我该如何解决这个问题呢?我正在使用Laravel,MySQL。
答案 0 :(得分:1)
您可以使用Carbon subDays()
或subHours()
计算最后一天的消息:
$numberOfMessages = Message::where('user_id', 1)
->where('created_at', '>', Carbon::now()->subDays(1))->count();
if ($numberOfMessages >= $dailyLimit) {
return;
}
如果您只想限制过去24小时的邮件数量,这将对您有用。如果您关心每个用户的日历日(当每个用户都有不同的时区时),这将不起作用。