反垃圾邮件系统laravel

时间:2018-02-17 09:47:54

标签: laravel

我想阻止用户在我的网站上发送垃圾评论,所以我在插入控制器之前做了这个:

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:日期是时间戳。

2 个答案:

答案 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的中间件。

您可以根据在一个时间间隔内发出的请求数量来设置限制。