2017-03-09 28 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

相關問題