PHP Session হচ্ছে ইউজার এর তথ্য অস্থায়ীভাবে Server এ সংরক্ষণ এবং Server এর মধ্যে অবস্থিত এক Page থেকে আরেকটি Page এ পাস করার মাধ্যম। (যতক্ষণ না ব্যবহারকারী ব্রাউজার বন্ধ করে দেয়)। একটি session based environment এ প্রত্যেক ইউজার কে একটি ইউনিক নম্বর দিয়ে identify করা হয়। যেটাকে বলা হয় session identifier অথবা SID. এই unique session ID টি প্রতিটি ব্যবহারকারীকে তাদের নিজস্ব তথ্য ইমেল, পোস্ট, ইত্যাদি সার্ভারের সাথে যোগাযোগ করতে ব্যবহার করা হয়।
কেন এবং কখন Session ব্যবহার করবেন?
- আপনি যদি আপনার ওয়েব সাইটের ব্যবহার কারীর গুরুত্বপূর্ণ তথ্য যেমন Id, Password ইত্যাদি আরও সুরক্ষিতভাবে সংরক্ষণ করতে চান যেন Malicious ব্যবহার কারীরা সেই তথ্য কোনো ভাবে টেম্পার করতে না পারে।
- আপনি যদি আপনার সার্ভারের এক পেজ থেকে অন্য পেজ এ value পাস করতে চান।
- আপনি ব্রাউজারে cookies এর বিকল্প চান। অর্থাৎ যদি ব্রাউজার cookie সমর্থন না করে।
- আপনি global ভেরিয়েবলগুলি কে URL- এ পাস করার তুলনায় একটি কার্যকর এবং আরো নিরাপদ পদ্ধতিতে সংরক্ষণ করতে চাইছেন।
- আপনি শপিং কার্টের মত একটি অ্যাপ্লিকেশন তৈরি করছেন যা 4KB এর চেয়ে বেশি ডাটা সংরক্ষণ করা প্রয়োজন।
- আপনি চাচ্ছেন ব্যবহারকারী ব্রাউজার বন্ধ করার সাথে সাথে তার সার্ভারে সংরক্ষিত সব তথ্য ডিলিট করে দিতে।
কিভাবে session তৈরী করবেন এবং কোনো কিছু সংরক্ষণ করবেন?
PHP তে session তৈরী করতে চাইলে আপনাকে session_start() function দিয়ে প্রথমে session start করতে হবে। তারপর $_SESSION super global variable দিয়ে সেশনে value সংরক্ষণ করতে হবে। নিচের উদাহরণে দেখুন:
File: phpsession1.php
<?php
// start them engines!
session_start();
// store session data
$_SESSION["username"] = "Masud";
if(isset($_SESSION["username"])){
echo "Yes I'm $_SESSION[username] from Session";
}
?>
Output
Yes I'm Masud from Session
PHP তে কিভাবে Session এর মাধ্যমে সার্ভারের এক পেজ থেকে অন্য পেজ এ value পাস করবেন?
PHP তে Session এর মাধ্যমে সার্ভারের এক পেজ থেকে অন্য পেজ এ value পাস করতে হলে আপনাকে শুধু session_start() ফাঙ্কশন কল করলেই হবে। এক্ষেত্রে মনে রাখতে হবে যেই পেজ থেকে session value অন্য পেজ এ পাস করবেন , প্রথমে সেই পেজ কে রান করতে হবে। নিচের উদাহরণ দেখুন :
প্রথমে phpsession1.php file টি রান করুন :
File: phpsession1.php
<?php
// start them engines!
session_start();
// store session data
$_SESSION["username"] = "Masud";
if(isset($_SESSION["username"])){
echo "Yes I'm $_SESSION[username] from Session";
}
?>
Output
Yes I'm Masud from Session
এবার phpsession2.php file টি রান করুন :
File: phpsession2.php
<?php
// start them engines!
session_start();
// store session data
if(isset($_SESSION["username"])){
echo "Yes I'm $_SESSION[username] from phpsession1.php file";
}
?>
Output
Yes I'm Masud from phpsession1.php file
লক্ষ্য করুন, আমরা phpsession2.php ফাইল এ session ইনিশিয়ালাইজ না করেই আগের phpsession1.php file এর ভ্যালু পেয়ে গেছি।
এবার চলুন session ব্যবহার করে আমরা যেকোনো ওয়েব সাইটের visitor count করব। নিচের উদাহরণ দেখুন:
File: visitor_count.php
<?php
session_start(); //start the PHP_session function
if(isset($_SESSION['page_count']))
{
$_SESSION['page_count'] += 1;
}
else
{
$_SESSION['page_count'] = 1;
}
echo 'You are visitor number ' . $_SESSION['page_count'];
?>
Output
You are visitor number 1
php তে কিভাবে একটি নির্দিষ্ট session variable কে ডিলিট করবেন?
php তে একটি নির্দিষ্ট session variable কে ডিলিট করতে হলে আপনাকে unset() ফাঙ্কশন টি ব্যবহার করতে হবে। নিচের উদাহরণ দেখুন:
<?php
// start them engines!
session_start();
// store session data
unset($_SESSION["username"]);
if(isset($_SESSION["username"])){
echo "Yes I'm $_SESSION[username] from phpsession1.php file";
}
else{
echo "Sorry I'm not available in your session";
}
?>
Output
Sorry I'm not available in your session
php তে কিভাবে একসাথে সব session variable কে খালি করবেন?
php তে একসাথে সব session variable কে খালি করতে হলে আপনাকে session_unset() ফাঙ্কশন টি ব্যবহার করতে হবে। নিচের উদাহরণ দেখুন:
<?php
// start them engines!
session_start();
// store session data
$_SESSION["username"]="Masud";
$_SESSION["email"]="masud@mail.com";
echo session_unset(); //unset all session variables
if(isset($_SESSION["username"]) OR isset($_SESSION["email"])){
echo "Yes I'm $_SESSION[username] from phpsession1.php file";
}
else{
echo "Sorry I'm not available in your session";
}
?>
php তে কিভাবে সব session কে Destroy বা ডিলিট করবেন ?
php তে সব session কে Destroy বা ডিলিট করতে হলে আপনাকে session_destroy() ফাঙ্কশন টি ব্যবহার করতে হবে। নিচের উদাহরণ দেখুন :
<?php
// start them engines!
session_start();
session_destroy(); //unset all session variables
if(isset($_SESSION["username"]) OR isset($_SESSION["email"])){
echo "Yes I'm $_SESSION[username] from phpsession1.php file";
}
else{
echo "Sorry I'm not available in your session";
}
?>
Output
Sorry I'm not available in your session
php তে কিভাবে session কে একটি নির্দিষ্ট সময় পর Destroy বা ডিলিট করবেন ?
php তে একটি নির্দিষ্ট session কে একটি নির্দিষ্ট সময় পর Destroy বা ডিলিট করতে হলে আপনাকে php time() function এর সাহায্য নিতে হবে । নিচের উদাহরণ দেখুন :
<?php
session_start();
// set time-out period (in seconds)
$inactive = 15;
// check to see if $_SESSION["timeout"] is set
if (isset($_SESSION["timeout"])) {
// calculate the session's "time to live"
$sessionTTL = time() - $_SESSION["timeout"];
if ($sessionTTL > $inactive) {
session_destroy();
header("Location: /logout.php");
}
}
$_SESSION["timeout"] = time();
এখন আপনি উপরের script টি যদি ১৫ সেকেন্ড পর আবার রান করেন তাহলে আপনি আর সেশন পাবেন না। script স্বয়ংক্রিয় ভাবে নিজেই session কে Destroy করে দিবে। এবং আপনাকে logout.php file এ redirect করে দিবে।
PHP তে Session Hijacking কিভাবে রোধ করবেন?
PHP তে Session Hijacking রোধ করতে হলে আপনাকে কিছুক্ষন পর পর আপনার existing session Id কে ডিলিট করে নতুন session Id regenerate করতে হবে। নিচের উদাহরণ লক্ষ্য করুন:
<?php
session_start();
if ($_POST["username"] == "admin" && $_POST["password"] == sha1("password")) {
$_SESSION["authorized"] = true;
session_regenerate_id();
}
php তে কিভাবে session এর মধ্যে function কে সংরক্ষণ করবেন?
php তে session এর মধ্যে function কে সংরক্ষণ করতে হলে আপনাকে নিচের কৌশল অবলম্বন করতে হবে । এর জন্য প্রথমে আপনাকে page1.php file নিচের মতো করে কোড লিখতে হবে :
page1.php
<?php
// begin our session
session_start();
// set a session variable containing a function
$_SESSION['foo'] = '
<?php
function foo(){
echo "I am stored in a session function named foo";}
?>';
এবার আপনাকে page2.php file এ eval() function দিয়ে session এ stored function কে রান করাতে হবে।
page3.php
<?php
// begin our session
session_start();
// evaluate the code within the session variable
eval('?>'.$_SESSION['foo']);
// run our stored function
foo();
?>
Output
I am stored in a session function named foo
এই রকম আরেকটি উদাহরণ:
page1.php
<?php
session_start();
$_SESSION['arrToString']='
<?php
/**
*
* Function arrToString
* Convert array to string using key value
*
* @param array $array
*
* @return void
*/
function arrToString($array){
// our string variable
$string="";
// loop over our array
foreach($array as $k=>$v)
{
// add key and value to the string
$string .= $k."-".$v."<br />";
}
// echo our string
echo $string;
}
?>';
?>
page2.php
<?php
// start our session
session_start();
// create an array of animals
$array = array('dingo', 'wombat', 'perl', 'kangaroo');
// evaluate the function stored within the session variable
eval('?>'.$_SESSION['arrToString']);
// execute the funtion, passing the array as an arg
arrToString($array);
?>
Output
0-dingo 1-wombat 2-perl 3-kangaroo
php তে কিভাবে session এর মধ্যে image কে সংরক্ষণ করবেন?
PHP তে session এর মধ্যে image কে সংরক্ষণ করতে হলে আপনাকে নিচের মতো কোড করতে হবে :
page1.php
<?php
// make it or break it
error_reporting(E_ALL);
// begin our session
session_start();
// specify an image
$image = './logo.png';
// check the file exists on the file system
if(file_exists($image))
{
// stuff the image info into a session
$_SESSION['image']['info'] = getImageSize($image);
// stuff the image into a session var
$_SESSION['image']['imagedata'] = file_get_contents($image);
echo 'Image '.$image.' is now in a session variable.<br />';
}
else
{
// if we fail to find the image file
echo '<div>Failed to find file ' . $image . '</div>';
}
?>
page2.php
<?php
ob_start();
session_start();
// set the header for the image
header("Content-type: image/png");
echo $_SESSION['image']['imagedata'];
ob_end_flush();
?>
উল্লেখ্য আপনাকে script যেই ফোল্ডারে , সেই একই ফোল্ডারে image টি সংরক্ষণ করতে হবে।
আপনার পেজ এ session active কিনা ? তা কিভাবে চেক করবেন?
যেকোনো পেজ এ session active কিনা তা চেক করতে হলে আপনাকে php defined() function এবং SID Constant টি ব্যবহার করতে হবে। নিচের উদাহরণে দেখুন :
<?php
if (defined('SID')){
echo 'Session is active';
}
else{
echo 'Session is not started';
}
?>
Output
Session is not started
<?php
session_start();
if (defined('SID')){
echo 'Session is active';
}
else{
echo 'Session is not started';
}
?>
Output
Session is active
তবে আপনি চাইলে নিচের মতো করেও session status check করতে পারেন। নিচের উদাহরণে দেখুন :
<?php
session_start();
if(session_status()==1){
echo "Your Session is not Active";
}
if(session_status()==2){
echo "Your Session is Active";
}
if(session_status()==0){
echo "Your Session is Disable";
}
?>