যারা বাংলাদেশের ৩৬ তম Zend Certified Engineer এবং এই সাইট (w3programmers) এর স্বত্বাধিকারী এবং লেখক Masud Alam স্যার এর কাছে কাছে সপ্তাহে ২ দিন ক্লাস, ৬ দিন প্রাকটিস করতে চান তাদের জন্য আগামী ১ February 2018 (বৃহস্পতি এবং শুক্রবার সন্ধ্যা ৬:০০ টা রাত ৯:০০ টা) থেকে শুরু হতে যাচ্ছে ৫ মাস ব্যাপী Professional Web Design & Development With HTML, CSS, JAVASCRIPT, JQUERY, PHP & MySQL for Beginners কোর্স (এই কোর্স টি যারা ফ্রিল্যান্সিং এবং আউটসোর্সিং কাজে আগ্রহী বিশেষ ভাবে তাদের জন্য design করা হয়েছে। ), আগামী ৪ February 2018 ( রবি এবং মঙ্গলবার সন্ধ্যা ৬:০০ টা থেকে রাত ৯:০০ টা ) থেকে শুরু হতে যাচ্ছে ৪ মাস ব্যাপী Zend Certified PHP 7.1 Engineering কোর্স। যেটা Advance PHP কোর্স নামে পরিচিত । এবং ৫ February 2018 (সোম এবং বুধবার সন্ধ্যা ৬:০০ টা থেকে রাত ৯:০০ টা) থেকে শুরু হতে যাচ্ছে ৪ মাস ব্যাপী Laravel 5.5 Professional Beginning to Advance Course কোর্স ।এই কোর্স গুলোতে তিনি ছাত্রদের কে সপ্তাহে ২ দিন ৩ ঘন্টা করে ৬ ঘন্টা ক্লাস নিবেন , এবং শনি থেকে বৃহস্পতি সপ্তাহে ৬ দিন ই স্যার এর অফিসে বসে প্রাকটিস করার সুযোগ দিবেন ! এতে প্রাকটিস করা কালীন ছাত্র-ছাত্রীরা কোনো সমস্যায় পড়লে তাৎক্ষণিক স্যার এর সহযোগিতা পাবে . (উল্লেখ্য: Training গুলো স্যার তার techbeeo software company'r পাশাপাশি পরিচালনা করে থাকেন।) কোর্স গুলো সম্পর্কে বিস্তারিত জানতে পারবেন এই লিংকে : Course Details .কোর্স গুলোর প্রত্যেকটির ফী নির্ধারণ করা হয়েছে ৩০,০০০ টাকা। আগ্রহীদেরকে অতিসত্বর মাসুদ আলম স্যার এর সাথে যোগাযোগ করার জন্য অনুরোধ করা যাচ্ছে। স্যার এর মোবাইল নম্বর : ০১৭২২ ৮১ ৭৫ ৯১

বাংলায় PHP LARAVEL FRAMEWORK পর্ব-৬ : LARAVEL Middleware BASICS

Laravel Framework এ Middleware কি?

Laravel Middleware

Laravel Middleware

Laravel Framework এ Middleware হচ্ছে আপনার application এ বিভিন্ন সোর্স থেকে আসা HTTP request গুলোকে controller এ পাঠানোর আগে filtering করার একটা দুর্দান্ত Mechanism বা পদ্ধতি। ধরুন Laravel authentication Middleware এর কথাই ধরা যাক, যখন আপনার application এ কোনো user লগইন করতে চায়, সেক্ষেত্রে Laravel authentication Middleware কাজ হচ্ছে যেই user লগইন করতে চায় , তাকে authentication Middleware নিজে Middle Man হিসেবে verify করবে , যদি ইউজার authenticated না হয় , তাহলে Laravel authentication Middleware সেই user কে login screen এ পাঠাবে , আর যদি authenticated হন, তাহলে laravel authentication Middleware ইউজারকে পরবর্তী কাজ করার বা পরবর্তী ধাপে যাওয়ার অনুমতি প্রধান করবে। সহজ ভাবে বলা যায় , আপনার application এ যেকোনো request এর পর এবং response এর পূর্বে সব ধরণের verification এবং authentication করার Mechanism হচ্ছে Laravel Middleware. Laravel এ Middleware ফাইল গুলা app/Http/Middleware এই ডিরেক্টরিতে রাখতে হয়।

Laravel Framework এ কি কি ধরণের Middleware আছে?

Laravel এ authentication Middleware এর পাশাপাশি আরো অনেক গুলো Middleware বিভিন্ন কাজের জন্য লিখা হয়েছে, যেমন: সব গুলো রেসপন্স application ত্যাগ করার আগে তার সঠিক header গুলো সংযুক্ত করার জন্য তৈরী করা হয়েছে CORS Middleware . আর incoming request এর লগ রাখার জন্য logging Middleware তৈরী করা হয়েছে। এছাড়াও CSRF protection এর জন্য CSRF Middleware । এছাড়া আপনার নিজের প্রয়োজন মতো বিভিন্ন Custom Middleware খুব সহজে তৈরী করে নিতে পারেন।

Middleware ব্যবহার করে আপনার application এর কোন কোন কাজ গুলো করতে পারেন ?

Laravel Framework এ Middleware ব্যবহার করে আমরা বিভিন্ন ধরণের কাজ করতে পারি, তারমধ্যে উল্লেখযোগ্য হচ্ছে :

১. আপনার Application এর Request গুলোর Log রাখতে পারেন।
২. বিভিন্ন Condition এর উপর ভিত্তি করে ইউজারদেরকে ভিন্ন ভিন্ন page এ redirect করতে পারেন।
৩. আপনার Application এ Incoming Parameters গুলোকে altering এবং sanitizing করতে পারেন।
৪. Response গুলোকে Manipulate করতে পারেন।
৫. এবং আরো অনেক কিছু

Laravel Framework এ কিভাবে Middleware তৈরী করা হয় ?

Laravel Framework এ নতুন Middleware তৈরী করতে হলে আপনাকে php artisan make:middleware MiddlewareName কমান্ডটি CLI তে রান করার মাধ্যমে Middleware তৈরী করে নিতে হবে। তাহলে চলুন আমরা একটা CheckAge নামে একটা Middleware তৈরী করি। যার কাজ হবে আমাদের application এ রিকোয়েস্ট age যদি ৩০ এর চেয়ে কম আসে তাহলে আমরা তাকে allow করব । CheckAge নামে নতুন middleware তৈরী করার জন্য আপনার CLI (Command Line Interface) এ নিচের কমান্ডটি রান করুন :

php artisan make:middleware CheckAge

সব কিছু ঠিক থাকলে আপনার CLI এ নিচের মতো রেজাল্ট দেখাবে :

Create new Middleware in Laravel 5.5

এখন আপনার app/Http/Middleware ফোল্ডারে checkAge নামে একটা middleware তৈরী হয়েগেছে ঠিক নিচের মতো :

Laravel Middleware List

এবং আপনার CheckAge Middleware এর কোডটি হবে নিচের মতো :

<?php

namespace App\Http\Middleware;

use Closure;

class CheckAge
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        return $next($request);
    }
}

নতুন CheckAge Middleware রেজিস্ট্রেশন

নতুন checkAge Middleware নিয়ে কাজ করতে হলে আপনাকে app/Http/kernel.php file এ এটিকে রেজিস্টার করে দিতে হবে , ঠিক নিচের মতো :

protected $routeMiddleware = [
        'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'CheckAge' => \App\Http\Middleware\CheckAge::class,
    ];

Controller Part :

এখন আমরা আমাদের age show করার জন্য একটা Controller তৈরী করব, যেটার আগে middleware চেক করবে http request এর মাধ্যমে আসা age টি valid কিনা তা চেক করবে। চলুন নিচের কমান্ডটির মাধ্যমে একটা showAge নামে Controller তৈরী করা যাক :

php artisan make:controller showAge

এখন নিচের মতো করে আপনার showAge নামে controller টি তৈরী হবে

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class showAge extends Controller
{
    //
}

এখন showAge Controller এ একটা index method করব যার কাজ হবে http request এর মাধ্যমে আসা age টি দেখাবে। নিচের কোডটি লক্ষ্য করুন :

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class showAge extends Controller
{
    public function index(Request $request){
    	echo "Welcome You're $request->age years Old";
    	
    }
}

Middleware এ Condition চেক :

এখন আমরা আমাদের তৈরী checkAge Middleware এ আমাদের age Validation করব , ধরুন আমরা আমাদের এপ্লিকেশন এ ৩০ বছরের বেশি বয়সী কেউকে allow করবোনা , এর জন্য আমরা নিচের কোডটি লিখব :

<?php

namespace App\Http\Middleware;

use Closure;

class CheckAge
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
         if ($request->age>=30) {
            die("You are $request->age years old, sorry we are unable to welcome you right now!");
        }

        return $next($request);
    
    }
}

Route Part :

এখন আমরা আমাদের route এ বলে দিবো আমাদের age টি কোন Controller দিয়ে প্রদর্শন করবে , এবং কোন Middleware দিয়ে Validation করবে। চলুন লেখা যাক :

Route::get("showage",
  [
    "uses"=>"[email protected]",
    "middleware"=>"CheckAge"
  ]);

এখন আমরা ৩০ বছরের বেশি বয়স দিয়ে প্রথমে চেক করব। আর চেক করার জন্য নিচের URL টি আপনার Browser address bar এ দিয়ে hit করুন :

http://localhost:8000/showage?age=50

আপনার ব্রাউজার এর ফলাফল নিচের মত আসবে:

Laravel Middleware Validation

আর যদি আপনি age 30 এর কম দেন তাহলে নিচের মতো রেজাল্ট আসবে। এবার নিচের URL টি ব্রাউজার এ দিয়ে হিট করুন :

http://localhost:8000/showage?age=15

Result

Laravel Middleware Validation Pass

Laravel Middleware Validation Pass

এই ক্যাটাগরির অন্যান্য পোস্ট:

Masud Alam
আমি মাসুদ আলম, বাংলাদেশের ৩৬ তম Zend Certified Engineer । ২০০৯ সালে কম্পিউটার সাইন্স থেকে বেচেলর ডিগ্রী অর্জন করি। দীর্ঘ ৮ বছর আমি Winux Soft, SSL Wireless, IBCS-PRIMAX, Max Group, Canadian International Development Agency (CIDA), Care Bangladesh, World Vision, Hellen Keller সহ বিভিন্ন দেশি বিদেশী কোম্পানিতে ওয়েব ডেভেলপমেন্ট এবং সফটওয়্যার ডেভেলপমেন্ট এর উপর বিভিন্ন লিডিং পজিশন এ চাকরি এবং প্রজেক্ট লিড করি। বিশেষ ভাবে বাংলাদেশের ১০০ জন জেন্ড সার্টিফাইড ইঞ্জিনিয়ার এর মধ্যে ৫২ জন ই আমার হাতে জেন্ড সার্টিফাইড হয়েছে। বর্তমানে TechBeeo Software Company তে সিইও হিসাবে আছি । পাশাপাশি w3programmers ট্রেনিং ইনস্টিটিউট এ PHP এর উপর Professional এবং Advance Zend Certified PHP -7 Engineering কোর্স করাই। আর w3programmers.com সাইট টি আমার।

Leave a Reply

Your email address will not be published. Required fields are marked *