استثمر للحياة

مواضيعنا

التحقق Validation و التصاريح Athuntications

حجم الخط

 

التحقق  Validation و التصاريح Athuntications

 

أولاً  : التحقق  Validation

هي عملية يقصد بها التأكد من إدخال البيانات إلى قاعدة البيانات بأن نكون  صحيحة غير ناقصة  و غير مكررة .
مثال :  لنتأكد من أن البيانات غير ناقصة و انها كلها مطلوبة
الخطوة الاولى :  نضع فى الدالة   create عرض View لنموذج تسجيل الدخول form
 

public function create()
                { return View::make('pages.form');ا}

 
و فى الدالة store  و نستخدم الكود

 
public function store()
                {
                $input= Input::all();
                $rule= array(
                'name'=>'regex:/(^[A-Za-z0-9+$]+)/| rerequired |unique:users ',
                 'email'=>'required' |email |unique:users’,
                'pass'=>'required | min:8|max:10');
                $validator=Validator::make ($input,$rule);
                           if ($validator->fails())
                                {
                                return Redirect::to('user/create')->withInput()->                                                                              withErrors($validator);
                                }
                else
                                {
                                $user= new User;
                                $user->name=Input::get('name');
                                $user->pass=Hash::make(Input::get('pass'));
                                $ user->save();
                                return Redirect::to('/');
                               }
}

               
نلاحظ

1  استخدمنا Hash::make لعمل تشفير لكلمة المرور ليتيح لنا قدر اكبر من الأمان .
2  استخدمنا $ rule لسرد قواعد التحقق فمثلاً

 rerequired  تعني أن هذا الحقل مطلوب

unique:users تعني أن يكون الحقل غير مكرر

  /(^[A-Za-z0-9+$]+)/          

تعني أن يكون المُدخل ارقام و حروف ابجدية

 email  تعني أن يكون المُدخل بريد إلكتروني حقيقي
min:8 تعني عدد محارف كلمة المرور لا يقل عن 8 و | max:10 تعني عدد محارف كلمة المرور لا يزيد عن  10أما min:8|max:10 فمعناها تتراوح بين 8 و 10


كما نلاحظ  

validator $  يحتوي على 2 بارمتر هما
الجملة الشرطية if لنتحقق من صحة البيانات المدخلة , الثاني هي قواعد التحقق .
كما ان () withInput تستخدم لاعادة إظهار البيانات فى نموذج الإدخال مرة اخرى بعد فشل التحقق .
أما ( withErrors($validator  ستجمع اخطاء التحقق مثل الاسم غير مطابق أو كلمة المرور غير مطابقة , و التى سوف نستقبلها فى نموذج الإدخال انظر الخطوة الثانية .

 
الخطوة الثانية : نقوم بتعديل نموذج الادخال form  هكذا لاحظ الدالة if  و هي التي ستظهر أخطاء التحقق إن وجدت

@if($errors->any())
        <ul>       {{ implode('',$errors->all('<li>:message</li>')) }}  </ul>
@endif
{{ Form::open(array('route'=>'user.store')) }}
<br>
  {{ Form::label('your name') }}
  {{ Form::text('name','') }}
  <br >
  {{ Form::label('pass word') }}
  {{ Form::password('pass') }}
  <br >
  {{ Form::label( 'E-Mail Address') }}
  {{ Form::text('email','') }}
   <br >
  {{ Form::submit ('Send') }}
{{ Form::close() }}
 

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

التصاريح Athuntications

   

 و تسمى أيضاً الأدوار ... و هي التى تحدد دور لكل عضو . فتسمح للمدير بدخول لوحة التحكم , أو تسمح للعضو بتسجيل تعليق مثلاً .
كما انها اذا كان الزائر لم يسجل دخول فتحوله الى صفحة login مباشرة .

الخطوة الأولى 


1  بداية يجب ان نتأكد من أن كلمة المرور فى قاعدة البيانات لا تقل عن 60 حرف و الافضل 100 .
2  وجود الحقل rememberToken  في جدول  users  و إن لم يكن موجود نُدخل في ملف migrate  الامر

$table->rememberToken();

2  ندخل مجلد Controller  و نفتح HomeController   و ننشئ دالتين جديدتين

الدالة Login

public function login()
    {
        return View::make('pages.login');
    }

الدالة postlogin

// login   و هي التى تستقبل البيانات من الدالة السابقة 

public function postlogin()
// التحقق من المدخلات
    {
        $input= Input::all();
        $rule= array('name'=>'required|unique:users',
                    'pass'=>'required|min:6');
        $validator=Validator::make ($input,$rule);
        if ($validator->fails())
        {
            return Redirect::intended('login')->withInput()->withErrors($validator);
        }
        else
        {  
// توثيق المدخلات 
        $method=array('name'=>Input::get('name'),'pass'=>Input::get('pass'));
            if(Auth::attempt($method))
            {
               return Redirect::intended('user');
            }
            else
            {
            return Redirect::intended('login');    
            }
    }}

نلاحظ 


1   Auth  لبدء عملية التوثيق و التأكد من أن العضو مسجل أم لا ... و فى حالة عدم التسجيل يقوم بتحويلة إلى الدالة    Login .


  attempt لعمل مقارنة بين البيانات المُدخلة و بين البيانات الموجودة فى قاعدة البيانات , كما أنه سيقوم - تلقائياً - بتشفير كلمة المرور المُدخلة و مقارنتها بكلمة المرور الموجودة فى قاعدة البيانات التي يجب أن - هي أيضاً - تكون مشفرة .



الخطوة الثانية 


من ملف Route نقوم بعمل 3 راوت جديد وهم

Route::get('login','HomeController@login');
// postlogin لاستقبال البيانات من الدالة
Route::post('login','HomeController@postlogin');

// و هذا مربط الفرس
//نضع فى هذا الراةت كل الصفحات التي نريد أن نحجبها عن الأعضاء غير المسجلين
Route::group(array('before'=>'auth'), function()
{
Route::resource('user','UserController');        
});
 

نلاحظ 


'before'=>'auth' تعني قبل السماح للعضو بدخول هذه المنطقة و اللى هي ( 'UserController'  ) يجب التأكد أنه يملك صلاحية الدخول .



الخطوة الثالثة 

 

تعديل فى موديل  User بإضافة المصفوفة fillable و التي تحتوي على المتغيرات التي نرغب فى توثيقها

Protected $fillable=array(name,pass);


 

الموضوع  : التحقق  Validation و التصاريح Athuntications  المرجع : استثمر للحياة  investolife 

اعلان تجاري
اعلان 468