Laravel 表单验证的一个问题,谢谢大家?

protected function validator(array $data)
    {
        $ip = DB::table('users')->whereRaw('ip = ? and created_at > ?', [get_client_ip(), Carbon::now()->subMinutes(60)])->count();
        $data = array_add($data,'ip',(string)$ip);
        return Validator ::make($data, [
            'name'     => 'required|string|max:255',
            'email'    => 'required|string|email|max:255|unique:users',
            'password' => 'required|string|min:6|confirmed',
            'captcha'  => 'required|captcha',
            'ip'       => 'required|same:0',
        ], [
            'captcha.required' => '请输入验证码!',
            'captcha.captcha'  => '验证码错误',
            "ip.same"      => "同一IP在60分钟内无法再次注册",
        ]);
    }

追加的IP字段假如不等于0的话就提示错误,等于0的时候就默认通过验证.

请问我这段验证哪里错了?不管数据库返回0还是1都会提示同一IP在60分钟内无法再次

张雷
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 3

你的字段验证用错了。

protected function validator(array $data)
{
        $ip = DB::table('users')->whereRaw('ip = ? and created_at > ?', [get_client_ip(), Carbon::now()->subMinutes(60)])->count();
        $data = array_add($data,'ip',(int)$ip);
        return Validator ::make($data, [
            'name'     => 'required|string|max:255',
            'email'    => 'required|string|email|max:255|unique:users',
            'password' => 'required|string|min:6|confirmed',
            'captcha'  => 'required|captcha',
            'ip'       => 'required|integer|in:0',
        ], [
            'captcha.required' => '请输入验证码!',
            'captcha.captcha'  => '验证码错误',
            "ip.same"      => "同一IP在60分钟内无法再次注册",
        ]);
}

same的用法是看是否匹配另一个字段,比如这样的

$data = ['name' => 'david', 'other_name' => 'david'];
Validator::make($data, [
    'name' => 'same:other_name'
]);
6年前 评论

验证字段值和指定的 字段( field ) 值是否相同。 same后要写验证的字段 不是值

6年前 评论
张雷

@DavidNineRoc 非常感谢哥们~

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!