اکنون بیش از هر زمان دیگری، بسیار مهم است که داده های برنامه های شما معتبر، دقیق و مطابق با تمام الزامات سیستم باشد. این نیاز به حفظ ثبات داده ها و جلوگیری از آسیب پذیری های امنیتی را برطرف می کند.
لاراول اعتبار سنجی داده ها را آسان و شهودی می کند. این از معماری کنترلر نمای مدل (MVC) پیروی می کند و فقط به دانش کلی PHP و مفاهیم برنامه نویسی شی گرا (OOP) نیاز دارد. علاوه بر این، لاراول چندین روش برای اعتبارسنجی داده های دریافتی ارائه می دهد.
برخی از این رویکردها و نحوه اعمال قوانین اعتبارسنجی در مجموعه داده خود را بررسی کنید.
اعتبارسنجی داده ها در لاراول آسان شده است
لاراول چندین قانون اعتبارسنجی آماده برای استفاده را برای زمانی که کاربران برنامه شما داده ها را از طریق فرم ها ارسال می کنند ارائه می دهد. میتوانید فیلدهای ورودی را بهعنوان مورد نیاز علامتگذاری کنید، حداقل یا حداکثر طول را تعیین کنید و به ورودیهای منحصربهفرد (غیر تکراری) و آدرسهای ایمیل معتبر نیاز داشته باشید. اعتبار سنج لاراول بررسی می کند که آیا ورودی با این قوانین یا سایر قوانینی که شما مشخص کرده اید مطابقت دارد یا خیر.
این قوانین اعتبارسنجی لاراول عبارتند از:
-
required
– داده های فیلد نباید خالی یا خالی باشد. -
array
– داده های فیلد باید یک آرایه PHP باشد. -
bail
— اجرای قانون اعتبارسنجی پس از مواجهه با اولین شکست اعتبار سنجی خود متوقف می شود. -
email
– داده های فیلد باید یک آدرس ایمیل معتبر باشد. -
unique
– داده های فیلد نباید در جدول پایگاه داده تکراری باشد.
همه روشهای اعتبارسنجی مزایا و معایبی دارند، اما تنوع آنها شما را قادر میسازد تا بهترین رویکرد را برای نیازهای خود انتخاب کنید. بسته به روش انتخابی شما، اعتبار سنجی لاراول می تواند به روش های مختلفی رخ دهد، با پیام های خطای دستی یا خودکار.
متداول ترین روش code>validate است که برای درخواست های HTTP ورودی استفاده می شود. این روش به داده های درخواست زنجیره می شود و قوانین اعتبارسنجی را اجرا می کند. همانطور که در مثال زیر مشاهده می کنید، می توانید قوانین هر فیلد را با کاما جدا کنید.
use Illuminate\Http\Request;
public function store (Request $request){
$validated = $request->validate([
'email' => ['required, unique:users, email, bail'],
'name' => ['required'],
]);
}
اینجا، email
یک ورودی ضروری است، به این معنی که نمی تواند null باشد. علاوه بر این، باید در آن منحصر به فرد باشد users
جدول پایگاه داده، اطمینان حاصل کنید که آدرس ایمیل یکسان دو بار ثبت نشده است. آخرین قانون حکم می کند که آدرس ایمیل نیز باید معتبر باشد. در غیر این صورت، روند اعتبار سنجی متوقف می شود. فیلد نام الزامی است اما قوانین دیگری ندارد.
اگر هر یک از قوانین اعتبارسنجی لاراول با شکست مواجه شود، یک پاسخ به طور خودکار ایجاد می شود.
مبانی اعتبارسنجی
برای درک بهتر روش های اعتبارسنجی، مثال زیر را در نظر بگیرید. شما یک مسیر برای نقطه پایانی تعریف می کنید و یک کنترل کننده برای اعتبارسنجی و پردازش داده های درخواست ایجاد می کنید.
ابتدا یک نقطه پایانی ساده ایجاد کنید که به کاربران امکان می دهد ایمیل ها و رمزهای عبور خود را ذخیره کنند.
مسیر را تعریف کنید
مسیرهای لاراول در تعریف شده است routes/web.php فایل برای یک برنامه وب یا routes/api.php برای یک API برای این مثال، استفاده کنید api.php:
use App\Http\Controllers\UserController;
Route::post('/store', [UserController::class]);
کنترلر را ایجاد کنید
این دستور Artisan را برای ایجاد کنترلر اجرا کنید:
php artisan make:controller
UserController
این دستور یک را ایجاد می کند UserController.php فایل در برنامه / Http / کنترلرها فهرست راهنما.
حال، a را تعریف کنید store
روشی برای تأیید اعتبار داده هایی که وارد نقطه پایانی ذخیره می شوند قبل از ذخیره سازی.
این مثال با استفاده از این قوانین فیلدهای زیر را تأیید می کند:
- پست الکترونیک – باید منحصر به فرد، یک ایمیل معتبر باشد و باید الزامی باشد
- کلمه عبور – باید حداقل طول، تأیید رمز عبور داشته باشد و باید الزامی باشد
- سن – باید عدد باشد و الزامی باشد
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UserController extends Controller
{
/**
* Store new user details.
*
*/
public function store(Request $request){
$validated = $request->validate([
'email' => 'required|unique:users|email',
'age' => 'required|numeric',
'password' => 'required|min:7|confirmed'
]);
// After user data is validated, logic to store the data
}
}
را confirmed
قانون به شما این امکان را می دهد که دو بار برای تأیید صحت داده ها از یک فیلد خاص استفاده کنید، مثلاً کاربران در هنگام ثبت نام رمز عبور خود را دوباره وارد کنند. این قانون نیاز به یک فیلد به نام دارد password_confirmation
، که داده های آن باید مطابقت داشته باشد کلمه عبور رشته.
نمایش پیام های خطا
اگر معیارهای اعتبارسنجی برآورده شوند، کد شما به طور معمول به کار خود ادامه می دهد. اگر اعتبارسنجی ناموفق باشد، یک IlluminateValidationValidationException
استثنا پرتاب می شود و پاسخ خطای مناسب برگردانده می شود.
مثال بر اساس یک API است که a را برمی گرداند 422 Unprocessable Entity
پاسخ HTTP در قالب JSON. برای برنامه های وب، برای نمایش پیام خطا به URL قبلی هدایت می شود و داده های درخواست به جلسه فلش می شود.
می توانید استفاده کنید $errors
متغیر در نماهای شما برای نمایش خطاهای برگشتی:
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
شما همچنین می توانید انتخاب کنید که فقط اولین خطا را مشاهده کنید یا برای مشاهده همه آنها حلقه بزنید.
// Fetch all errors
$errors->all()
// Fetch only the first error
$errors->first()
دوباره پر کردن فرم ها
پر کردن مجدد فرم ها، کاربران را از تایپ مجدد اطلاعات نجات می دهد تا بتوانند روی رفع خطا تمرکز کنند. در مثالی از ناموفق بودن یک آدرس ایمیل، می توانید با فراخوانی مقدار قدیمی برای فرم، بقیه فرم را دوباره پر کنید. name
رشته.
$name = $request-> old('name')
//Blade helper
<input type="text" name="name" value="{{ old('name') }}">
این قانون برمی گشت null
اگر ورودی قبلی وجود نداشت
اعتبار سنجی پیشرفته
لاراول روش دیگری برای نوشتن اعتبارسنجی به نام درخواست فرم ارائه می دهد. درخواست فرم یک کلاس درخواست سفارشی است که اعتبارسنجی ها را سازماندهی می کند و کنترلر شما را از بین می برد.
آنها منطق اعتبارسنجی و مجوز خود را دارند که برای حجم های ورودی بزرگ مناسب است و می توان از آنها برای تعریف قوانین اعتبارسنجی و سفارشی کردن پیام های خطا استفاده کرد.
برای ایجاد یک درخواست فرم، دستور Artisan را اجرا کنید:
php artisan make:request StoreUserRequest
این دستور یک را ایجاد می کند StoreUserRequest.php فایل در برنامه/Http/درخواستها دایرکتوری و شامل دو روش پیش فرض است:
rules
قوانین اعتبارسنجی را برای داده های درخواستی برمی گرداند.authorize
یک Boolean برمی گرداند تا مشخص کند آیا آن کاربر مجوز انجام عمل درخواستی را دارد یا خیر.
مثال قبلی را برای استفاده از درخواست فرم تبدیل کنید.
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class StoreUserRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
// Add logic to check if the user is authorized to submit this data.
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, mixed>
*/
public function rules()
{
return [
'email' => 'required|unique:users|email',
'age' => 'required|numeric',
'password' => 'required|min:7|confirmed'
];
}
}
برای سفارشی کردن پیامهای خطای این قوانین، میتوانید روش پیامها را لغو کنید FormRequest
کلاس
/**
* Get the error messages for the defined validation rules.
*
* @return array
*/
public function messages()
{
return [
'email.required' => 'An email address is required',
'email.email' => 'The email address must be valid',
'password.confirmed'=>'Re-type your password as
password_confirmation, passwords does not match'
];
}
توجه داشته باشید: نام داده و قانون اعتبارسنجی با یک نقطه (.) قبل از داده پیام از هم جدا می شوند.
اعتبار سنجی سفارشی
برای ایجاد اعتبار سنجی سفارشی، می توانید از a استفاده کنید Validator
نما به جای validate
. نمونه اعتبارسنجی شامل دو آرگومان است: داده هایی که باید اعتبار سنجی شوند و آرایه ای از قوانین اعتبارسنجی. این دو استدلال به ::make
روش در نمای اعتبار سنجی، ایجاد یک نمونه اعتبار سنج جدید.
use Illuminate\Http\Request;
public function store (Request $request){
$validator = Validator::make($request->all(),[
'email' => 'required|unique:users|email',
'age' => 'required|numeric',
'password' => 'required|min:7|confirmed'
]);
if ($validator->fails()) {
// Return errors or redirect back with errors
return $validator->errors();
}
// Retrieve the validated input...
$validated = $validator->validated();
// Continue logic to store the data
}
اگر می خواهید مستقیم خودکار اضافه کنید، می توانید آن را اجرا کنید validate
روش بر روی یک نمونه اعتبار سنجی از قبل موجود. اگر اعتبارسنجی ناموفق باشد، یک درخواست XHR یک پاسخ JSON با آن ایجاد می کند 422 Unprocessable Entity
به عنوان کد وضعیت، یا کاربر بلافاصله هدایت می شود.
$validator = Validator::make($request->all(),[
'email' => 'required|unique:users|email',
'password' => 'required|min:7|confirmed'
])->validate();
همچنین می توانید پیام های خطای خود را با ارسال آرگومان سومی به نام سفارشی سازی کنید messages
به Validate::make method
:
$validator = Validator::make($request->all(),[
'email' => 'required|unique:users|email',
'age' => 'required|numeric',
'password' => 'required|min:7|confirmed'
], $messages = [
'required' => 'The :attribute field is required.',
]);
توجه داشته باشید: را :attribute
با نام فیلد تحت اعتبار سنجی جایگزین می شود.
خلاصه
انجام اعتبارسنجی داده ها برای تمیز، صحیح و کامل نگه داشتن مجموعه داده شما بسیار مهم است. اعتبارسنجی داده به شما این امکان را میدهد تا خطاهایی را در دادههای خود که به طور بالقوه میتوانند پروژه شما را خراب کرده یا به شکل دیگری تحت تأثیر قرار دهند، از بین ببرید. هنگام کار در مقیاس و با مقادیر زیاد داده، اعتبارسنجی اهمیت فزاینده ای پیدا می کند.
لاراول چندین رویکرد انعطاف پذیر را برای اطمینان از یکپارچگی و دقت داده هایی که از طریق برنامه شما عبور می کند، فعال می کند. شما میتوانید با روشهای پیشفرض و قابل تنظیم به منطق اعتبارسنجی پیچیده دست پیدا کنید، که پایگاه کد خود را به خوبی ساختار یافته و به راحتی قابل استفاده مجدد است.
برنامه های Laravel خود را با خدمات میزبانی برنامه Kinsta سریعتر ارسال کنید.
همه برنامه ها، پایگاه های داده و سایت های وردپرس خود را به صورت آنلاین و زیر یک سقف دریافت کنید. پلت فرم ابری پر از ویژگی ها و عملکرد بالا ما شامل موارد زیر است:
- راه اندازی و مدیریت آسان در داشبورد MyKinsta
- پشتیبانی تخصصی 24 ساعته
- بهترین سخت افزار و شبکه Google Cloud Platform که توسط Kubernetes برای حداکثر مقیاس پذیری ارائه شده است
- یک ادغام Cloudflare در سطح سازمانی برای سرعت و امنیت
- مخاطبان جهانی با حداکثر 35 مرکز داده و 275 PoP در سراسر جهان به دست میآیند
با یک آزمایش رایگان میزبانی برنامه یا میزبانی پایگاه داده ما شروع کنید. برنامه های ما را بررسی کنید یا با فروشندگان صحبت کنید تا بهترین مناسب خود را پیدا کنید.