2017-03-09 26 views
0

我遇到了一个问题,我无法理解来自哪里。它不经常发生,如每2-3个月2-3次。防止在短时间内保存数据库中的多条消息

在网站上我有一个表格,用户可以向管理员发送信息。一切工作正常,但不时有一个消息在数据库中保存30-40次,与1秒钟不同。

可能是页面加载问题。我怀疑用户在页面加载之前可以点击提交按钮30次以上。在我的控制器中的代码也很简单

public function indexSubmit() { 
    $validatorRules = array(
     'message' => 'required|min:5', 
    ); 

    Input::merge(array_map('trim', Input::all())); 
    $validator = Validator::make(Input::all(), $validatorRules); 

    if ($validator->fails()) { 
     return Redirect::to('/messages')->withErrors($validator->errors())->withInput(Input::all()); 
    } 

    $message = new Message; 
    $message->user_id = self::$user['user_id']; 
    $message->text = Input::get('message'); 
    $message->read_state = 0; 
    $message->from_admin = 0; 
    $message->save(); 

    return Redirect::to('/messages')->with('message_success', 'Message sent.'); 
} 

我觉得一个解决办法是在莫名其妙的提交限制为1,每10秒的例子。我怎样才能做到这一点?

尝试这样做,不似乎工作

$message = new Message; 
    if($message->created_at + 10 < time()) { 
     // insert 
    } 
    else{ 

     // error 
    } 

回答

0

有人可能只是垃圾邮件的形式,你也可以添加一个CAPTCHA或奶妈测试。如果您想限制请求,请将最后一个请求time()存储在某个地方并与之比较。

​​
+0

这是电子商务和按摩从实际上是由订单客户..所以我怀疑,他/她将只是相同的消息30+次垃圾邮件。但谁知道... – VLS

+0

更新我的问题与我在控制器中尝试过,但似乎不工作 – VLS

相关问题