PHP Web Features
PHP Session কি?
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 টি সংরক্ষণ করতে হবে।
উল্লেখ্য আপনাকে 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"; } ?>