ip(); if (RateLimiter::tooManyAttempts($key, 5, 60)) { $seconds = RateLimiter::availableIn($key); $msg = "提交过于频繁,请 {$seconds} 秒后再试。"; if ($request->wantsJson()) { return response()->json(['ok' => false, 'message' => $msg], 429); } return back()->withErrors(['message' => $msg])->withInput(); } $data = $request->validate([ 'name' => ['required', 'string', 'max:40'], 'email' => ['required', 'email', 'max:120'], 'phone' => ['nullable', 'string', 'max:20', 'regex:/^[0-9+\-()\s]+$/'], 'company' => ['nullable', 'string', 'max:120'], 'subject' => ['required', 'string', 'max:80'], 'message' => ['required', 'string', 'max:1000'], ]); ContactMessage::create([ 'name' => $data['name'], 'email' => $data['email'], 'phone' => $data['phone'] ?? null, 'company' => $data['company'] ?? null, 'subject' => $data['subject'], 'message' => $data['message'], 'ip' => $request->ip(), ]); RateLimiter::hit($key, 60); if ($request->wantsJson()) { return response()->json(['ok' => true, 'message' => '提交成功,我们会尽快与您联系。']); } return back()->with('success', '提交成功,我们会尽快与您联系。'); } }