Javascript 如何设置用户报告之间的时间间隔?

Javascript 如何设置用户报告之间的时间间隔?,javascript,php,html,laravel,Javascript,Php,Html,Laravel,是否可以在用户的报告之间添加计时器?我想在用户的报告之间添加5分钟,或者即使用户刷新页面,也可以在5分钟内禁用报告按钮。是否可以 这是我的报告按钮 <li class="share-link" style="float: right;left: 20px"><a data-toggle="modal" data-target="#exampleModal" href="javascript:void(0)" ><i class="rounded-x icon-fla

是否可以在用户的报告之间添加计时器?我想在用户的报告之间添加5分钟,或者即使用户刷新页面,也可以在5分钟内禁用报告按钮。是否可以

这是我的报告按钮

<li class="share-link" style="float: right;left: 20px"><a data-toggle="modal" data-target="#exampleModal" href="javascript:void(0)" ><i class="rounded-x icon-flag"></i></a></li>

因此,我要设置报告之间的时间间隔,3-5分钟用户不应该能够生成报告。

未经测试,但是假设您在
报告
表上使用时间戳(
处创建,
处更新),您应该能够通过以下逻辑实现这一点:

$reportExists = \App\Report::where('user_id', $request['user_id'])
    ->whereDate('created_at', '>', now()->subMinutes(5)->toDateTimeString())
    ->exists();

if ($reportExists) {
    // report has been created within 5 minutes
    return Redirect::back()->withErrors(['error', 'Report created within the last 5 minutes');
}

...
这将使用
->whereDate()
雄辩的查询方法检查在过去5分钟内是否为该用户创建了报告

->exists()
方法用于确定报告是否至少发生过一次

检查
$reportExists
是否为真。如果是这样,应用程序将使用错误消息将用户重定向到同一页面(用适当的消息填充
->withErrors()
方法)


这应该放在所有其他控制器逻辑之前。

尝试将上次报告时间存储在会话或数据库中,然后在他尝试生成报告时用它检查当前时间。是的,这是可能的。您存储用户提交报告的时间(例如数据库),下次用户提交报告时,请检查自上次提交以来经过的时间,如果>5分钟,则允许提交,否则告诉用户他还不能提交新报告。嘿,我将报告时间存储在
创建的
表格中。@jibstroos,你能给我举个例子吗?谢谢。我使用的是
Carbon::now()
,但我仍然可以在没有计时器的情况下生成报告:(你从
$reportExists
收到了什么?
dd($reportExists)
is
false
在数据库中,您是否确保在测试此检查的5分钟内创建了一个报告?这是我从
reports
表中创建的报告。我创建了一个报告,刷新了页面,几秒钟后,我又创建了一个报告,结果相同:(
$reportExists = \App\Report::where('user_id', $request['user_id'])
    ->whereDate('created_at', '>', now()->subMinutes(5)->toDateTimeString())
    ->exists();

if ($reportExists) {
    // report has been created within 5 minutes
    return Redirect::back()->withErrors(['error', 'Report created within the last 5 minutes');
}

...