اذهب إلى المحتوى
  • 0

عمليات التحقق من الحقول في laravel

Osama Kha

السؤال

هل عملية ال validation للحقول ضمن laravel تعتبر افضل ام انه التعامل مع عمليات التحقق ك front end خيار افضل مثلا JavaScript 

احتاج معرف الفرق وايهما افضل 

الفكرة بشكل عام هو التحقق ب استخدام laravel يتطلب طلب او ارسال الى السيرفر ليتأكد انه تم ادخال المعلومات بما يتناسب مع انواعها؟ ام انه لايحتاج لذلك 

لا اعلم اذا كان الذي اعتقده صحيح مئة بالمئة او لا ليس دائما 

ال validation من جهة ال front end يعتبر خيار جيد لانه لا يتم ارسال الطلب اما من جهة ال back end يتطلب وهذا يؤثر على السيرفر من جهة الطلبات 

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

في جميع الحالات يجب التحقق من البيانات في الواجهة الخلفية back end حتى ولو احتاج ذلك الى ارسال طلب الى السيرفر وذلك لضمان صحة البيانات وتناسقها, أما في جهة front end لك الحرية في ذلك, أحيانا يمكن للشخص الغاء عمليات التحقق في جهة front end ولكن لا يمكن الغاء التحقق في جهة back end ولذلك دائما يجب التحقق من البيانات في جهة back end

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

إن التحقق من جهة المستخدم جيد من ناحية إعطاء المستخدم فكرة أفضل عن الأخطاء و بطريقة تفاعلية أكثر بكثير، مثلاً في حال نسي أن يقوم بإدخال حقل ضروري أو في حال استعمل أحرف غير مدعومة في اسم المستخدم (كالفراغات مثلاً).

و بالتالي معالجة هكذا أخطاء تقلل العبء على السيرفر و تسهل تفاعل المستخدم مع الموقع.

و لكن هذه العمليات لا تقوم بكل شيء، كما أنه يوجد الكثير من الطرق لتخطيها، و بالتالي التحقق من ناحية السيرفر هو أمر ضروري جداً، خاصة لأسباب الحماية، فقد تكون هناك بعض العمليات التي ترسل ملفات ضارة كالفيروسات إلى السيرفر، فيجب التحقق من كل ذلك و إلا يكون التطبيق غير آمن.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

في Laravel، تستطيع استخدام validation للتحقق من صحة الحقول في الجانب الخادم (backend) قبل عملية الإدخال لقاعدة البيانات، وهذا يساعد على تجنب إدخال البيانات غير الصحيحة أو غير المكتملة وتحسين جودة البيانات التي تدخل إلى قاعدة البيانات.

ومن الجيد استخدام ال validation في Laravel بدلاً من JavaScript في ال front end لعدة أسباب:

  1. يتم التحقق من صحة الحقول في الجانب الخادم بعد تقديم النموذج، وهذا يعني أنه يمكن التحقق من صحة البيانات بغض النظر عن المتصفح الذي يتم استخدامه.
  2. يسمح Laravel بإنشاء validation rules متعددة ومتقدمة لتحديد صحة البيانات بالطريقة التي تريدها.
  3. يمكن استخدام validation للتحقق من أي بيانات يتم إدخالها، بغض النظر عن نوع الحقل أو البيانات التي يتم إدخالها.
  4. تستخدم Laravel validation بشكل واسع في المشاريع الكبيرة والمعقدة، ويمكن أن يتم توسيعها وتخصيصها بسهولة.

وإذا كان لديك تطبيق معقد وكبير، فمن المستحسن استخدام validation في Laravel للتحقق من صحة البيانات، حيث يمكنك تحديد validation rules لكل حقل بسهولة. وبالتالي، يمكن تجنب أخطاء إدخال البيانات غير الصحيحة وتحسين جودة البيانات التي تدخل إلى قاعدة البيانات.

إليك مثال بسيط على كيفية استخدام Laravel validation في النماذج:

حيث سننشئ نموذجًا لإنشاء مستخدم جديد ونستخدم validation rules المدمجة للتحقق من صحة الحقول.

1- يتم تعريف ال validation rules داخل حاوية validate() المستخدمة في الدالة store() في الكونترولر:

public function store(Request $request)
{
    $validatedData = $request->validate([
        'name' => 'required|max:255',
        'email' => 'required|email|unique:users,email|max:255',
        'password' => 'required|min:6|max:255',
    ]);

    // إنشاء مستخدم جديد باستخدام البيانات الموثقة
    $user = User::create($validatedData);

    return redirect('/users')->with('success', 'تم إنشاء المستخدم بنجاح.');
}

2- في الكود السابق، قمت بتحديد الحقول المراد التحقق منها وتعيين قواعد التحقق المطلوبة بين القوسين المربعين، كما يتم إرجاع البيانات الموثقة بواسطة الدالة validate().

3- يتم إنشاء المستخدم باستخدام البيانات الموثقة وإرجاع رسالة نجاح إلى صفحة عرض المستخدمين.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

عملية التحقق من صحة البيانات (Validation) يمكن أن تتم من جهتين:

Front-end: باستخدام JavaScript وقبل إرسال البيانات إلى السيرفر. هذا الخيار يوفر على السيرفر تلقي بيانات خاطئة ومعالجتها. لكن لا يمنع من إمكانية تجاوز عملية التحقق بسهولة.

Back-end: باستخدام Laravel Validation وبعد إرسال البيانات إلى السيرفر. هذا الخيار يضمن تلقي السيرفر لبيانات صحيحة فقط. لكن يؤدي إلى زيادة عدد الطلبات لأن بعضها قد تحتوي على بيانات خاطئة.

الحل الأمثل هو استخدام Validation من الجهتين:

على مستوى الـFront-end لتوفير بعض المعالجة وعدم إرسال بيانات ظاهرة الخطأ.

على مستوى الـBack-end كضمانة أخيرة ولمنع أي محاولات للتجاوز.

بهذه الطريقة نضمن تلقي السيرفر لبيانات صحيحة معظم الوقت، مع الأخذ بعين الاعتبار إمكانية وجود بعض البيانات الخاطئة والتي سيتم التعامل معها على مستوى السيرفر.

أمثلة على الشرح السابق

على مستوى الـFront-end:

  • نقوم بتحديد قواعد التحقق من صحة الحقل مثل: طول الحقل ونوع البيانات وما إلى ذلك.
  • نكتب دالة JavaScript تسمى مثلا validateForm() تقوم بالتحقق من جميع الحقول عند إرسال النموذج.
  • إذا وجدت خطأ في أحد الحقول، نعرض رسالة خطأ للمستخدم ونمنع إرسال النموذج.
  • إذا كانت كل البيانات صحيحة، نسمح بإرسال النموذج.

على مستوى الـBack-end:

  • نستخدم طريقة validate() في Laravel لتعريف قواعد التحقق لكل حقل. مثل:
$this->validate($request, [ 'name' => 'required|max:50', 'email' => 'required|email|unique:users' ]);

إذا كانت البيانات المرسلة من النموذج غير صحيحة، ستقوم طريقة validate() بإظهار رسالة خطأ وإعادة توجيه المستخدم إلى الصفحة السابقة.إذا كانت البيانات صحيحة، يتم قبول النموذج ومعالجة البيانات.

هذه هي عملية التحقق من صحة البيانات بشكل أساسي. يمكن لـLaravel أيضا أن تقوم بالتحقق من صحة بيانات أكثر تعقيدا مثل توافق كلمة المرور أو تحقق من صيغة البريد الإلكتروني وغيرها.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

مثلما أشار الزملاء فإن عملية التحقق من الادخالات على واجهة المستخدم وجهة العميل يحسن من تجربة الاستخدام بشكل عام، ويقلل من الطلبيات الفاشلة على الخادم وبدل احباطها كل مرة لسبب ما يتم ذلك دون اعادة تحديث الصفحة. ولذلك، فإنه لا يمكن فرض مقارنة بينهما وتفضيل أحدهما عن الآخر، فالمستحسن أن يكون كلاهما موجودا لتلافي حدوث اي مشكلة بمعالجة الادخالات سواءا على مستوى الواجهة الخلفية او على مستوى قاعدة البيانات، وتحسينا لتجربة استخدام المستخدم. 

وفي لارافيل على وجه الخصوص، وفي جزئية التحقق من البيانات على مستوى الخادم يفضل استعمال نماذج التحقق من الطلب Form Request validation لفصل منطق التحقق وتطبيق مبدأ فصل المهام، فبدل كتابة شيفرتك على نحو:

/**
 * تخزين منشور جديد
 */
public function store(Request $request)
{
    // جلب البيانات المتحقق منها
    $validated = $request->validate([
         'title' => 'required|min:8',
         'content' => 'required|min:10'
    ]);
 
    // تخزين المنشور ..
 
    return redirect('/posts');
}

يمكن كتابته وفق:

/**
 * تخزين منشور جديد
 */
public function store(StorePostRequest $request)
{
    // جلب البيانات المتحقق منها
    $validated = $request->validated();
 
    // تخزين المنشور ..
 
    return redirect('/posts');
}

اذ يكون الصنف StorePostRequest صنفا منفصلا تماما يحوي منطق التحقق على نحو:

<?php 

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class StorePostRequest extends FormRequest
{
    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        return [
            'title' => 'required|min:8',
            'content' => 'required|min:10'
        ];
    }
}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...