Mahmoud Alrashidi نشر 19 فبراير 2021 أرسل تقرير نشر 19 فبراير 2021 ما معنى Mass Assignment في لارافيل، و ما معني الخطأ التالي Page Expired 419 اقتباس
0 سمير عبود نشر 19 فبراير 2021 أرسل تقرير نشر 19 فبراير 2021 Mass Assignment او التعيين الجماعي هو عندما تقوم بإرسال مصفوفة بمفاتيح و قيم مُتنوعة للعملية إنشاء كائن ما سواء عن طريق الباني أو عن طريق دوال eloquent مثل create او update: <?php $model = new Model([ 'key1' => 'value1', 'key2' => 'value2', . . . ]); // او $model = Model::create([ 'key1' => 'value1', 'key2' => 'value2', . . . ]); // او $model->update([ 'key1' => 'value1', 'key2' => 'value2', . . . ]); في هذه الحالة لارافيل ستُحاول حمايتك تلقائياً من بعض الثغرات التي تُسببها هذه العملية. قد يظهر لك الأمر عادي لكن هذه العملية تحميك كثيرا مثلاً إذا كان لديك جدول للمُستخدمين و به عمود is_admin إذا كانت قيمته 1 فإن المُستخدم سيكون مُشرف في التطبيق، قد يستغل اي شخص ذلك و يُرسل حقل مخفي is_admin مع الطلب قيمته 1 و بالتالي سيُصبح مشرف بدل أن يكون مستخدم عادي. توفر laravel طريقة للحماية من هذا الأمر فيُمكنك مثلا إستخدام الطريقة العادية في إنشاء كائن جديد بتعيين الخصائص بشكل منفصل: <?php $model = new Model(); $model->prop1 = "value1"; $model->prop2 = "value2"; . . . $model->save(); لكن إن أردت إستخدام التعيين الجماعي يُمكنك إستخدام أحد المصفوفات fillable او guarded الموجودتان ضمن النموذج حيث في المصفوفة fillable تضع كافة الخصائص التي تريد أن تُعين جماعياً: protected $fillable = ['prop1', 'prop2']; أما المصفوفة guarded فتُستخدم لحماية بعض الخاصيات التي لا تريد أن تُعين جماعياً على سبيل المثال: protected $guarded = ['is_admin']; بطبيعة الحال يُمكنك فقط إستخدام أحد المصفوفتين فهما يعملان عكس بعضهما، ف fillable تعني القائمة البيضاء و guarded تعني القائمة السوداء أما بخصوص: بتاريخ 55 دقائق مضت قال كمال محمودي: و ما معني الخطأ التالي Page Expired 419 غالباً ما يحدث هذا الخطأ بسبب csrf token تقوم لارافيل بحقنه في الجلسة و إرساله مع كل نموذج لذلك إن كان لديك نموذج form يجب عليك إضافة الحقل المخفي csrf سواء عن طريق: <form action="" method="post"> @csrf ... او عن طريق <form action="" method="post"> {{ csrf_field() }} ... أحيانا يكون هذا الحقل مُضمن في النموذج و يحدث الخطأ و ذلك راجع غالباً لإنتهاء الجلسة او أن الجلسة لم يتم حفظها بشكل جيد، إفتراضياً يتم حفظ الجلسات على شكل ملفات في المُجلد storage. قد لا تكون الصلاحيات المُطبقة على هذا المُجلد مناسبة مما لا يسمح بحفظ الملفات عليه. 3 اقتباس
0 بلال زيادة نشر 19 فبراير 2021 أرسل تقرير نشر 19 فبراير 2021 Mass Assignment هي عندما ترسل مصفوفة إلى إنشاء النموذج, بشكل أساسي تقوم بتعيين مجموعة من الحقول على النموذج دفعة واحدة, بدلاً من واحد تلو الأخر. مثل. $post = new Post(request()->all()); يمكن استخدام fillabel لوضع حماية على جميع جميع الحقول التي تريد الإضافة لها إو تحديثها. protected $fillable = ['name', 'email']; ويمكن استخدام $guarded بهذا الشكل لمنع أي حقل من التخصيص الجماعي. protected $guarded = []; protected $guarded = ['age']; أو يمكن استخدام protected $guarded = ['*']; لمنع التخصيص الجماعي للحقول كافة. اقتباس ما معني الخطأ التالي Page Expired 419 يمكنك إضافة @csrf للنموذج بهذا الشكل وهذا يحدث اما بسبب التصاريح المطبقة على المجلد أو بسبب انتهاء الجلسة. <form action="" method="post"> @csrf <div class="box-body"> @if ($errors->any()) <div class="alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <div class="form-group"> <label for="name">الأسم بالكامل</label> <input type="text" name="name" class="form-control" id="name" placeholder="اسم المستخدم" value="{{ old('name') }}"> </div> <div class="box-footer"> <button type="submit" class="btn btn-primary">حفظ</button> </div> </form> لو استمرت المشكلة تأكد من التصاريح لمجلد storage يمكنك من التأكد أنه يحمل التصريح 770 أو 777. 1 اقتباس
السؤال
Mahmoud Alrashidi
ما معنى Mass Assignment في لارافيل، و ما معني الخطأ التالي Page Expired 419
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.