User Authentication একটি অত্যন্ত গুরুত্বপূর্ণ বৈশিষ্ট্য যেকোনো ওয়েব অ্যাপ্লিকেশনের জন্য, যা ব্যবহারকারীদের সিস্টেমে লগইন, সাইনআপ এবং সেশন পরিচালনা করতে সহায়ক। CodeIgniter-এ সহজেই User Authentication সিস্টেম তৈরি করা সম্ভব, এবং এটি ব্যবহারকারীর লগইন, সাইনআপ, লগআউট, সেশন পরিচালনা ইত্যাদি প্রক্রিয়াগুলো সহজ করে তোলে।
এই টিউটোরিয়ালে, আমরা একটি User Authentication সিস্টেম তৈরি করব যা ব্যবহারকারীর সাইনআপ, লগইন, এবং লগআউট প্রক্রিয়া পরিচালনা করবে।
প্রথমে, একটি ডাটাবেস তৈরি করুন এবং সেখানে একটি users টেবিল তৈরি করুন।
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
User Authentication এর জন্য একটি কন্ট্রোলার তৈরি করুন। এখানে আমরা Auth
নামক একটি কন্ট্রোলার তৈরি করব।
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Auth extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->model('user_model'); // User model লোড করা
$this->load->library('session'); // Session লাইব্রেরি লোড
$this->load->helper(['form', 'url']); // Form এবং URL হেল্পার লোড
}
// সাইনআপ ফর্ম দেখানো
public function signup() {
$this->load->view('signup');
}
// সাইনআপ প্রক্রিয়া
public function register() {
$username = $this->input->post('username');
$email = $this->input->post('email');
$password = password_hash($this->input->post('password'), PASSWORD_BCRYPT); // পাসওয়ার্ড হ্যাশ করা
$data = [
'username' => $username,
'email' => $email,
'password' => $password
];
if ($this->user_model->insert_user($data)) {
redirect('auth/login');
} else {
$this->session->set_flashdata('error', 'User registration failed!');
redirect('auth/signup');
}
}
// লগইন ফর্ম দেখানো
public function login() {
$this->load->view('login');
}
// লগইন প্রক্রিয়া
public function authenticate() {
$email = $this->input->post('email');
$password = $this->input->post('password');
$user = $this->user_model->get_user_by_email($email);
if ($user && password_verify($password, $user['password'])) {
$session_data = [
'user_id' => $user['id'],
'username' => $user['username'],
'logged_in' => TRUE
];
$this->session->set_userdata($session_data);
redirect('welcome');
} else {
$this->session->set_flashdata('error', 'Invalid login credentials!');
redirect('auth/login');
}
}
// লগআউট প্রক্রিয়া
public function logout() {
$this->session->sess_destroy();
redirect('auth/login');
}
}
User Model তৈরি করে আমরা ডাটাবেসের সাথে যোগাযোগ করব। এখানে insert_user(), get_user_by_email() ফাংশনগুলো থাকবে।
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class User_model extends CI_Model {
// নতুন ব্যবহারকারী সাইনআপ
public function insert_user($data) {
return $this->db->insert('users', $data);
}
// ইমেইল দিয়ে ব্যবহারকারী অনুসন্ধান
public function get_user_by_email($email) {
$this->db->where('email', $email);
$query = $this->db->get('users');
return $query->row_array(); // একক রেকর্ড ফেরত আনে
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Sign Up</title>
</head>
<body>
<h2>Create an Account</h2>
<?php echo form_open('auth/register'); ?>
<label for="username">Username</label>
<input type="text" name="username" required><br>
<label for="email">Email</label>
<input type="email" name="email" required><br>
<label for="password">Password</label>
<input type="password" name="password" required><br>
<button type="submit">Sign Up</button>
<?php echo form_close(); ?>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
<h2>Login to Your Account</h2>
<?php echo form_open('auth/authenticate'); ?>
<label for="email">Email</label>
<input type="email" name="email" required><br>
<label for="password">Password</label>
<input type="password" name="password" required><br>
<button type="submit">Login</button>
<?php echo form_close(); ?>
</body>
</html>
CodeIgniter-এ রুট কনফিগারেশন সেট করতে, application/config/routes.php
ফাইলে রুটগুলো উল্লেখ করতে হবে।
$route['default_controller'] = 'welcome';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
$route['auth/signup'] = 'auth/signup';
$route['auth/register'] = 'auth/register';
$route['auth/login'] = 'auth/login';
$route['auth/authenticate'] = 'auth/authenticate';
$route['auth/logout'] = 'auth/logout';
Session ব্যবহারকারী লগইন সেশন পরিচালনার জন্য ব্যবহৃত হয়। CodeIgniter এ সেশন ব্যবহারের জন্য session
লাইব্রেরি লোড করতে হয়। সেশন ব্যবহার করে লগইন তথ্য সংরক্ষণ এবং লগআউট করার সময় সেশন ধ্বংস করা হয়।
if ($this->session->userdata('logged_in')) {
// ইউজার লগইন অবস্থায় থাকলে
$username = $this->session->userdata('username');
} else {
// ইউজার লগইন না থাকলে লগইন পেজে রিডিরেক্ট
redirect('auth/login');
}
পাসওয়ার্ড সুরক্ষিত রাখার জন্য password_hash() এবং password_verify() ফাংশন ব্যবহার করা হয়। এটি পাসওয়ার্ড হ্যাশ করে ডাটাবেসে সংরক্ষণ করে এবং লগইন করার সময় সঠিকতা যাচাই করে।
এটি ছিল CodeIgniter-এ একটি User Authentication সিস্টেম তৈরি করার একটি মৌলিক উদাহরণ। এই সিস্টেমে সাইনআপ, লগইন, লগআউট এবং সেশন ব্যবস্থাপনা করা হয়। এর মাধ্যমে একটি শক্তিশালী এবং নিরাপদ Authentication সিস্টেম তৈরি করা সম্ভব, যা আপনার অ্যাপ্লিকেশনকে সুরক্ষিত এবং ব্যবহারকারীদের জন্য কার্যকরী করে তোলে।
Read more