我想阻止用户在我的网站上发送垃圾评论,所以我在插入控制器之前做了这个:
public function link_comment($id) {
$spam_checker = DB::table('comments')
->whereDate('created_at', today())
->where('user_id', auth()->user()->id)
->orderby('id', 'desc')
->take(5)
->get();
}
所以,我想检查用户是否在1分钟内发送5条评论,如果是,则发送错误。我该怎么做?
Obs:日期是时间戳。
答案 0 :(得分:1)
在控制器的顶部使用Carbon \ Carbon;
public function link_comment($id) {
$spam_checker = DB::table('comments')
->whereBetween('created_at', [Carbon::now()->subMinutes(1)->toDateTimeString(), Carbon::now()])
->where('user_id', auth()->user()->id)
->orderby('id', 'desc')
->get();
if(count($spam_checker)>=5){
//send a error here.
}
}
答案 1 :(得分:1)
Laravel为此提供了一个名为ThrottleRequests的中间件。
您可以根据在一个时间间隔内发出的请求数量来设置限制。