防止在短时间内在数据库中保存多条消息

时间:2017-03-09 09:47:09

标签: php laravel-4

我有一个问题,我无法理解从哪里来。它不会经常发生,例如每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.');
}

我认为一个解决方案可能是以某种方式将提交限制为每10秒1次。我怎么能做到这一点?

试过这个似乎不起作用

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

        // error
    }

1 个答案:

答案 0 :(得分:0)

有人可能只是在向您的表单发送垃圾邮件,您也可以添加CAPTCHA或AYAH测试。如果要限制请求,请将最后一个请求if($stored_time + 10 < time()) 存储在某处并与之进行比较。


[UINavigationBar appearance].barTintColor = [UIColor colorWith RGBA]