Session Management হলো ওয়েব অ্যাপ্লিকেশনের একটি গুরুত্বপূর্ণ অংশ, যা ব্যবহারকারীর ডেটা নির্দিষ্ট সময় পর্যন্ত সংরক্ষণ করে। CodeIgniter একটি বিল্ট-ইন Session Library সরবরাহ করে, যা ব্যবহারকারীর সেশন পরিচালনা করা সহজ করে তোলে।
CodeIgniter 4-এ Session লাইব্রেরি ডিফল্টভাবে লোড করা থাকে। আপনি সরাসরি session()
হেল্পার ফাংশন ব্যবহার করতে পারেন।
$session = session();
সেশন কনফিগারেশনটি app/Config/App.php
ফাইলে সংজ্ঞায়িত করা হয়।
public $sessionDriver = 'CodeIgniter\Session\Handlers\FileHandler';
public $sessionCookieName = 'ci_session';
public $sessionExpiration = 7200; // সেকেন্ডে সময়
public $sessionSavePath = WRITEPATH . 'session';
public $sessionMatchIP = false;
public $sessionTimeToUpdate = 300;
public $sessionRegenerateDestroy = false;
$session = session();
$session->set('username', 'JohnDoe');
$session->set(['email' => 'johndoe@example.com', 'logged_in' => true]);
$session = session();
$username = $session->get('username'); // একক মান
$allData = $session->get(); // সমস্ত সেশন ডেটা
$session = session();
$session->remove('username'); // নির্দিষ্ট ডেটা মুছে ফেলা
$session = session();
$session->destroy(); // সমস্ত সেশন ধ্বংস
Flashdata হলো সেশন ডেটা, যা একবার রিড করার পরে স্বয়ংক্রিয়ভাবে মুছে যায়।
$session = session();
$session->setFlashdata('success', 'Your data has been saved!');
$session = session();
echo $session->getFlashdata('success');
Tempdata হলো সেশন ডেটা, যা নির্দিষ্ট সময় পর্যন্ত সক্রিয় থাকে।
$session = session();
$session->setTempdata('token', '123456', 300); // 300 সেকেন্ড বা ৫ মিনিট
$session = session();
echo $session->getTempdata('token');
$session = session();
$session->removeTempdata('token');
ডাটাবেস সেশন সংরক্ষণের জন্য একটি টেবিল তৈরি করতে হবে। উদাহরণ:
CREATE TABLE ci_sessions (
id VARCHAR(128) NOT NULL,
ip_address VARCHAR(45) NOT NULL,
timestamp INT(10) UNSIGNED DEFAULT 0 NOT NULL,
data BLOB NOT NULL,
PRIMARY KEY (id),
KEY `ci_sessions_timestamp` (`timestamp`)
);
app/Config/App.php
ফাইলে ডাটাবেস ড্রাইভার সেট করুন:
public $sessionDriver = 'CodeIgniter\Session\Handlers\DatabaseHandler';
public $sessionSavePath = 'ci_sessions'; // টেবিলের নাম
Session Regeneration: সেশন হাইজ্যাকিং প্রতিরোধের জন্য সেশন রিজেনারেট করুন:
$session = session();
$session->regenerate();
IP Address Match: সেশন কনফিগারেশনে sessionMatchIP
অপশন true
করে দিন:
public $sessionMatchIP = true;
HTTP Only Cookies: কনফিগার করুন যেন সেশন কুকিজ শুধুমাত্র HTTP এর মাধ্যমে অ্যাক্সেসযোগ্য হয়:
public $cookieHTTPOnly = true;
<?php
namespace App\Controllers;
class SessionExample extends BaseController {
public function index() {
$session = session();
$session->set('username', 'JohnDoe');
$session->setFlashdata('success', 'Welcome, JohnDoe!');
return view('session_view');
}
}
<?php if (session()->getFlashdata('success')): ?>
<div class="alert alert-success">
<?= session()->getFlashdata('success'); ?>
</div>
<?php endif; ?>
<p>Username: <?= session()->get('username'); ?></p>
CodeIgniter-এর Session Management ডেভেলপারদের সেশন ডেটা সংরক্ষণ, নিরাপত্তা নিশ্চিত করা এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করার জন্য একটি শক্তিশালী এবং সহজ পদ্ধতি প্রদান করে। Flashdata এবং Tempdata এর মতো ফিচার অ্যাপ্লিকেশনকে আরও কার্যকর করে তোলে।
Read more