初始化

This commit is contained in:
2026-08-08 18:27:38 +08:00
parent efc150c937
commit 060eb79c09
336 changed files with 24613 additions and 15 deletions
@@ -0,0 +1,61 @@
<?php
namespace App\Http\Controllers;
use App\Models\ContactMessage;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\RateLimiter;
use Illuminate\View\View;
class ContactController extends Controller
{
public function show(): View
{
return view('contact');
}
public function store(Request $request): JsonResponse|RedirectResponse
{
$key = 'contact:'.$request->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', '提交成功,我们会尽快与您联系。');
}
}