PHP Session কি?

session details
session details

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

1
2
3
4
5
6
7
8
9
<?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

1
2
3
4
5
6
7
8
9
<?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

1
2
3
4
5
6
7
8
<?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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
<?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() ফাঙ্কশন টি ব্যবহার করতে হবে। নিচের উদাহরণ দেখুন:

01
02
03
04
05
06
07
08
09
10
11
12
<?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() ফাঙ্কশন টি ব্যবহার করতে হবে। নিচের উদাহরণ দেখুন:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
<?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() ফাঙ্কশন টি ব্যবহার করতে হবে। নিচের উদাহরণ দেখুন :

01
02
03
04
05
06
07
08
09
10
11
12
13
<?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 এর সাহায্য নিতে হবে । নিচের উদাহরণ দেখুন :

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
<?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 করতে হবে। নিচের উদাহরণ লক্ষ্য করুন:

1
2
3
4
5
6
7
<?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

01
02
03
04
05
06
07
08
09
10
11
<?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

01
02
03
04
05
06
07
08
09
10
11
12
<?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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
<?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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?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

01
02
03
04
05
06
07
08
09
10
11
<?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 টি ব্যবহার করতে হবে। নিচের উদাহরণে দেখুন :

1
2
3
4
5
6
7
8
9
<?php
if (defined('SID')){
    echo 'Session is active';
}
else{
    echo 'Session is not started';
}
 
?>

Output

Session is not started
01
02
03
04
05
06
07
08
09
10
<?php
session_start();
if (defined('SID')){
    echo 'Session is active';
}
else{
    echo 'Session is not started';
}
 
?>

Output

Session is active

তবে আপনি চাইলে নিচের মতো করেও session status check করতে পারেন। নিচের উদাহরণে দেখুন :

01
02
03
04
05
06
07
08
09
10
11
12
13
<?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";
}
 
?>

আমি মাসুদ আলম, বাংলাদেশের ৩৬ তম Zend Certified Engineer । ২০০৯ সালে কম্পিউটার সাইন্স থেকে বেচেলর ডিগ্রী অর্জন করি। দীর্ঘ ১৫ বছর আমি Winux Soft, SSL Wireless, IBCS-PRIMAX, Max Group, Canadian International Development Agency (CIDA), Care Bangladesh, World Vision, Hellen Keller, Amarbebsha Ltd সহ বিভিন্ন দেশি বিদেশী কোম্পানিতে ডেটা সাইন্স, মেশিন লার্নিং, বিগ ডেটা, ওয়েব ডেভেলপমেন্ট এবং সফটওয়্যার ডেভেলপমেন্ট এর উপর বিভিন্ন লিডিং পজিশন এ চাকরি এবং প্রজেক্ট লিড করি। এছাড়াও বাংলাদেশের ১৮৫ জন জেন্ড সার্টিফাইড ইঞ্জিনিয়ার এর মধ্যে ১২০ এরও অধিক ছাত্র আমার হাতে জেন্ড সার্টিফাইড ইঞ্জিনিয়ার হয়েছেন। বর্তমানে w3programmers ট্রেনিং ইনস্টিটিউট এ PHP এর উপর Professional এবং Advance Zend Certified PHP -8.2 Engineering, Laravel Mastering Course with ReactJS, Python Beginning To Advance with Blockchain, Machine Learning and Data Science, Professional WordPress Plugin Development Beginning to Advance কোর্স করাই। আর অবসর সময়ে w3programmers.com এ ওয়েব টেকনোলজি নিয়ে লেখালেখি করি।

Leave a Reply