User Registration, Login এবং Logout ব্যবস্থা

Authentication এবং Authorization - ফুয়েলপিএইচপি (FuelPHP) - Web Development

219

FuelPHP তে User Registration, Login, এবং Logout ব্যবস্থা তৈরি করা খুবই সহজ, কারণ FuelPHP একটি শক্তিশালী ফ্রেমওয়ার্ক যা বিভিন্ন নিরাপত্তা ফিচার এবং সেশন ম্যানেজমেন্ট সরবরাহ করে। নিচে একটি সাধারিত User Registration, Login, এবং Logout সিস্টেম তৈরি করার জন্য প্রয়োজনীয় ধাপগুলোর বিস্তারিত ব্যাখ্যা দেওয়া হল।

FuelPHP তে User Registration, Login এবং Logout ব্যবস্থা তৈরি করা

1. User Registration (নতুন ব্যবহারকারী নিবন্ধন)

ব্যবহারকারী নিবন্ধনের সময়, সাধারণত ব্যবহারকারীর ইমেল, ইউজারনেম, পাসওয়ার্ড ইত্যাদি প্রয়োজন হয়। FuelPHP তে এটি করতে সেশন ক্লাস এবং ডাটাবেস ইন্টিগ্রেশন ব্যবহার করা হয়।

Step 1: Database মাইগ্রেশন (Database Migration)

প্রথমে একটি ইউজার টেবিল তৈরি করতে হবে। FuelPHP তে migrations ব্যবহার করা যেতে পারে।

fuel/app/migrations/001_create_users_table.php:

<?php

namespace Fuel\Migrations;

class Create_users_table
{
    public function up()
    {
        \DBUtil::create_table('users', array(
            'id' => array('type' => 'int', 'constraint' => 11, 'auto_increment' => true),
            'username' => array('type' => 'varchar', 'constraint' => 50),
            'email' => array('type' => 'varchar', 'constraint' => 100),
            'password' => array('type' => 'varchar', 'constraint' => 255),
            'created_at' => array('type' => 'datetime'),
            'updated_at' => array('type' => 'datetime'),
        ), array('id'));
    }

    public function down()
    {
        \DBUtil::drop_table('users');
    }
}

Step 2: User Model তৈরি করা

এখন আপনাকে একটি ইউজার মডেল তৈরি করতে হবে, যা ডাটাবেসের সাথে যোগাযোগ করবে।

fuel/app/classes/model/user.php:

<?php

class Model_User extends \Orm\Model
{
    protected static $_properties = array(
        'id',
        'username',
        'email',
        'password',
        'created_at',
        'updated_at',
    );

    protected static $_table_name = 'users';

    // Method for registering a new user
    public static function register($username, $email, $password)
    {
        // Hash the password
        $password_hash = password_hash($password, PASSWORD_BCRYPT);

        // Insert the user into the database
        $user = Model_User::forge(array(
            'username' => $username,
            'email' => $email,
            'password' => $password_hash,
            'created_at' => \Date::forge()->format('mysql'),
            'updated_at' => \Date::forge()->format('mysql'),
        ));
        
        return $user->save();
    }
}

Step 3: Registration Controller তৈরি করা

এখন আপনাকে একটি কন্ট্রোলার তৈরি করতে হবে যা ইউজার রেজিস্ট্রেশন প্রক্রিয়া পরিচালনা করবে।

fuel/app/controllers/register.php:

<?php

class Controller_Register extends Controller
{
    public function action_index()
    {
        if (Input::method() == 'POST') {
            // Get input data from form
            $username = Input::post('username');
            $email = Input::post('email');
            $password = Input::post('password');
            
            // Register the user
            $success = Model_User::register($username, $email, $password);
            
            if ($success) {
                Session::set_flash('success', 'Registration successful!');
                Response::redirect('login');
            } else {
                Session::set_flash('error', 'Registration failed!');
            }
        }

        return View::forge('register/index');
    }
}

Step 4: Registration View তৈরি করা

এখন ইউজারের জন্য একটি Registration Form তৈরি করা যাক।

fuel/app/views/register/index.php:

<h2>Register</h2>

<?php if (Session::get_flash('error')): ?>
    <p style="color:red"><?php echo Session::get_flash('error'); ?></p>
<?php endif; ?>

<?php if (Session::get_flash('success')): ?>
    <p style="color:green"><?php echo Session::get_flash('success'); ?></p>
<?php endif; ?>

<form method="POST">
    <label for="username">Username</label>
    <input type="text" name="username" required>

    <label for="email">Email</label>
    <input type="email" name="email" required>

    <label for="password">Password</label>
    <input type="password" name="password" required>

    <button type="submit">Register</button>
</form>

2. User Login (ব্যবহারকারী লগইন)

ব্যবহারকারীর লগইন করার জন্য, তাদের ইমেল এবং পাসওয়ার্ড যাচাই করা হয়। এখানে পাসওয়ার্ড ভেরিফিকেশনের জন্য password_verify() ফাংশন ব্যবহার করা হবে।

Step 1: Login Controller তৈরি করা

fuel/app/controllers/login.php:

<?php

class Controller_Login extends Controller
{
    public function action_index()
    {
        if (Input::method() == 'POST') {
            $email = Input::post('email');
            $password = Input::post('password');
            
            // Find the user by email
            $user = Model_User::find('first', array(
                'where' => array(
                    array('email', $email)
                )
            ));

            // Verify password
            if ($user && password_verify($password, $user->password)) {
                // Set session data
                Session::set('user_id', $user->id);
                Session::set('username', $user->username);
                Session::set('is_logged_in', true);

                Response::redirect('dashboard'); // Redirect to a dashboard
            } else {
                Session::set_flash('error', 'Invalid login credentials');
            }
        }

        return View::forge('login/index');
    }

    public function action_logout()
    {
        // Clear session data on logout
        Session::delete('user_id');
        Session::delete('username');
        Session::delete('is_logged_in');

        Response::redirect('login'); // Redirect to login page
    }
}

Step 2: Login View তৈরি করা

fuel/app/views/login/index.php:

<h2>Login</h2>

<?php if (Session::get_flash('error')): ?>
    <p style="color:red"><?php echo Session::get_flash('error'); ?></p>
<?php endif; ?>

<form method="POST">
    <label for="email">Email</label>
    <input type="email" name="email" required>

    <label for="password">Password</label>
    <input type="password" name="password" required>

    <button type="submit">Login</button>
</form>

3. Logout (ব্যবহারকারী লগআউট)

লগআউট করার জন্য, কেবল সেশন ডেটা মুছে ফেলতে হয় এবং ব্যবহারকারীকে লগইন পৃষ্ঠায় রিডাইরেক্ট করা হয়।

লগআউট করার জন্য, আমরা আগের Login Controller এর action_logout মেথডটি ব্যবহার করেছি, যা সেশন ডেটা মুছে ফেলবে।

Final Thoughts:

FuelPHP তে User Registration, Login, এবং Logout ব্যবস্থা তৈরি করার জন্য আমাদের ডাটাবেস মডেল, কন্ট্রোলার এবং ভিউ ফাইল তৈরি করতে হয়। এই সিস্টেমে ইউজারদের পাসওয়ার্ড সুরক্ষিত রাখতে password_hash() এবং password_verify() ফাংশন ব্যবহার করা হয়, যা সিকিউরিটি নিশ্চিত করে। FuelPHP তে সেশন ব্যবস্থাপনা খুবই সহজ এবং কার্যকরী, যা ইউজারের লগইন স্ট্যাটাস এবং অন্যান্য ডেটা সেভ এবং রিট্রিভ করতে সহায়ক।

Content added By
Promotion

Are you sure to start over?

Loading...