Predefined Variables in PHP

PHP তে অনেকগুলো predefined variables আছে যা আপনি আপনার প্রত্যেকটি PHP ফাইলেই access করতে পারবেন। এই সব variables এর মাধ্যমে আপনি external variables থেকে শুরু করে built-in environment variables, last error messages এমনকি last retrieved headers ও দেখতে পারবেন।
চলুন সেই predefined variables গুলো দেখে আসি-

Superglobals

PHP তে বেশ কিছু built-in variables আছে যা কিনা আপনার PHP ফাইলে যে কোন জায়গা থেকে call / access করা যাবে। এদরেকেই বলা হয় Superglobals Variables. superglobal variables গুলো হলো-

১) $GLOBALS

এই $GLOBALS variable এর মাধ্যমে global scope এ যত variable আছে তাদেরকে access করা যাবে। যেমন- আমরা জানি যে variable এর ২ টি স্কোপ আছে। একটি হলো Local Scope এবং অপরটি হলো Global scope। নিচের উদাহরনটি লক্ষ্য করুন-

<?php
$name = 'Shibbir Ahmed';
function show_name () {
    echo $name;
}
show_name();
?>

এখানে আমরা একটি $name variable declare এবং assinged করেছি। তারপর একটি function যার নাম show_name declare করে এর ভিতরে সেই $name variable কে echo করার চেষ্টা করেছি। এখন আমরা যখন function show_name() কল করব তখন এ রকম একটি এরর ম্যাসেজ পাবো।

Notice: Undefined variable: name in D:\xampp\htdocs\amarcourse\tutorial\php\my.php on line 11

এর কারন হলো $name variable টা আছে global scope এ। আর আমরা এই global variable কে function এর ভিতরে মানে Local Scope এ কল করার চেষ্টা করেছি যা করা যাবে না।
তবে আপনি যদি করতে চান $GLOBALS variable এর সাহায্য নিতে হবে। $GLOBALS variable এর নিয়ম হলো কোন global variable কে function এর ভিতরে access করতে হলে Asssociative Array আকারে সেই global variable কে access করতে হবে। যেমন-

<?php
$name = 'Shibbir Ahmed';
function show_name () {
    echo $GLOBALS['name'];
}
show_name();
?>

এখানে আমরা $GLOBALS[‘name’]; ব্যবহার করেছি globally যে $name variable কে access করার জন্য।

২) $_SERVER

আপনার Server এবং execution environment এর তথ্য প্রদান/দেখার জন্য এই superglobal variables ব্যবহার করা হয়। মানে আপনি headers, paths, and script locations দেখতে পারবেন এই Super Global Variable এর মাধ্যমে।
আপনি যদি এই Super Global Variable কে print_r() দিয়ে output করেন ব্রাউজারে তাহলে এটি একটি associative array return করবে। যেমন-

<?php
echo '<pre>';
print_r($_SERVER);
echo '</pre>';
?>

Output হিসেবে আপনি দেখতে পারবেন-

এই associative array এর প্রত্যেকটি key এর এক একটা অর্থ রয়েছে। এখানে key বলতে বুঝানো হয়েছে [HTTP_HOST], [HTTP_CONNECTION], [HTTP_CACHE_CONTROL] ইত্যাদিকে। যেমন- আপনি যদি HOST সম্পর্কে জানতে চান তাহলে আপনাকে লিখতে হবে-

<?php
echo $_SERVER['HTTP_HOST'];
?>

এর Output হিসেবে আপনি দেখতে পারবেন-
localhost (যদি আপনি আপনার কম্পিউটারে localhost এ চেক করেন )

এবার চলুন আমরা কয়েকটি key এর ব্যাখ্যা দেখে আসি-

[‘PHP_SELF’]
বর্তমান PHP ফাইলৈর নাম relative path সহ দেখার জন্য এই key টি ব্যবহার করা হয়।
[‘SERVER_ADDR’]
বর্তমান server এর IP address বের করার জন্য এই key টি ব্যবহার করা হয়।
[‘SERVER_NAME’]
server host এর নাম জানার জন্য এই key টি ব্যবহার করা হয়।
[‘SERVER_SOFTWARE’]
server এর identification string দেখানোর জন্য এই key টি ব্যবহার করা হয়।
[‘REQUEST_METHOD’]
বর্তমান ফাইলকে access করার জন্য কোন request method টা ব্যবহার করা হয়েছে তা দেখার জন্য এই key টি ব্যবহার করা হয়।
[‘REQUEST_TIME_FLOAT’]
বর্তমান ফাইলকে access করার সময়টা জানার জন্য এই key টি ব্যবহার করা হয়।
[‘QUERY_STRING’]
বর্তমান ফাইলকে access করার জন্য যদি কোন query string ব্যবহার করা হয় তাহলে তা দেখানোর জন্য এই key টি ব্যবহার করা হয়।
[‘DOCUMENT_ROOT’]
বর্তমানে যে ফাইলটা আপনি চালাচ্ছেন তার root directory দেখার জন্য এই key টি ব্যবহার করা হয়।
[‘HTTP_USER_AGENT’]
আপনি যে ব্রাউজারে PHP ফাইলটা চালাচ্ছেন সেই ব্রাউজারের তথ্য জানার জন্য এই key টি ব্যবহার করা হয়।
[‘REMOTE_ADDR’]
IP address জানার জন্য এই key টি ব্যবহার করা হয়।
বিস্তারিত দেখার জন্য PHP এর অফিসিয়াল documentation দেখতে পারেন এই লিংক থেকে http://php.net/manual/en/reserved.variables.server.php

৩) $_GET

query string থেকে কোন key এর value আনার জন্য এই Variable টা ব্যবহার করা হয়। যেমন- আপনার ওয়েবসাইটের একটা address হলো-
www.amarcourse.com/profile.php?id=10
এখানে ?id=10 হচ্ছে query string এবং এই query string এ একটি key (id) এবং এই key (id) এর একটি value যা 10 রয়েছে। এখন আপনি যদি এই value টা পেতে চান তাহলে আপনার এভাবে লিখতে হবে-

echo $_GET['id']; // আপনি আউটপুট হিসেবে ১০ দেখতে পাবেন

৪) $_POST

HTML এ Form এর input field থেকে কোন তথ্য নেওয়ার জন্য এই Variable টা ব্যবহার করা হয়। যেমন- আমরা একটি HTMLএর Login Form নিলাম।

<!DOCTYPE html>
<html>
<head>
	<title>Get form data using $_POST</title>
</head>
<body>
<form action="process.php" method="post" accept-charset="utf-8">
	<h3>Login Form</h3>
	<table>
		<tr>
			<td><input type="text" name="username"></td>
		</tr>
		<tr>
			<td><input type="password" name="password"></td>
		</tr>
		<tr>
			<td><input type="submit" name="submit" value="Login"></td>
		</tr>
	</table>
</form>
</body>
</html>

যার আউটপুট হলো এই রকম-

এখানে দেখতে পাচ্ছেন যে আমরা ২ টি input field নিয়েছি এবং এই ২ টি input field এ name নামে ২টি এট্রিবিউট রয়েছে। এই ২টি এট্রিবিউট এর value হলো username এবং password
এখন আপনি যদি Form টা Login Button এ Press করেন তাহলে process.php নামে একটা পেজে চলে যাবে। কেন? কারন এই লাইনটা যদি আপনি খেয়াল করেন-

<form action="process.php" method="post" accept-charset="utf-8">

তাহলে দেখতে পাবেন যে আমরা action নামে একটি এট্রিবিউট ব্যবহার করেছি এবং তার value হিসেবে process.php দিয়েছি। এর মানে হলে যখন ই আপনি Login Button এ Press করবেন তখনই আপনি process.php পেজে চলে যাবেন।
এখন এই process.php পেজ থেকে আপনাকে input field ২টির value নিতে হবে। কিভাবে? হ্যাঁ, এই $_POST Variable এর মাধ্যমেই আমাদের ঐ input field ২টির value নিতে হবে। কেন $_POST এর মাধ্যমে? কারন আপনি এখানে –

<form action="process.php" method="post" accept-charset="utf-8">

method হিসেবে post বলে দিয়েছেন তাই।

<?php
echo $_POST['username'];
echo $_POST['password'];
?>

এখানে আমরা দেখতে পাচ্ছি যে input field এর ডাটা নেওয়ার জন্য আমাদেরকে associative array আকারে নিতে হচ্ছে। যেমন- প্রথমে $_POST এবং এর পর সেই name এট্রিবিউটের value টা দিতে হবে।
এভাবেই আমরা $_POST এর মাধ্যমে form এর value নিয়ে থাকি।

৫) $_FILES

আমরা যখন HTML Form এ কোন upload করার ব্যবস্থা রাখবো তখন সেই upload কৃত ফাইলকে access করার জন্য এই Variable টি ব্যবহার করব। যেমন-

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>$_FILES Super Global Variable</title>
</head>
<body>
<form action="process.php" method="post" enctype="multipart/form-data">
	<table border="1" cellpadding="5" cellspacing="5">
		<tr>
			<td>Upload Your Profile Image</td>
		</tr>
		<tr>
			<td><input type="file" name="profile_image"></td>
		</tr>
		<tr>
			<td><input type="submit" value="Upload" value="submit"></td>
		</tr>
	</table>
</form>
</body>
</html>

এর আউটপুট হিসেবে আপনি দেখতে পারবেন-

এখানে আমরা HTML এর ১টা Form তৈরী করেছি এবং এর মধ্যে ১ টি input field ব্যবহার করেছি এবং সেই input field এর type হলো file. যার ফলে আমরা file Upload করার একটা button দেখতে পাচ্ছি। যেমন- Choose File। এখন এই Choose File এ ক্লিক করলে আপনি একটি box দেখতে পারবেন যার ফলে আপনি যে কোন ফাইলকে সিলেক্ট করতে পারবেন।
এখন কোন ১টা ফাইল সিলেক্ট করার পর যখন Upload Button এ ক্লিক করবেন তখন আপনি process.php পেজে চলে যাবেন। কেন? কারন এই লাইটি দেখুন-

<form action="process.php" method="post" enctype="multipart/form-data">

এখানে আপনি দেখতে পাচ্ছেন যে আমরা form ট্যাগের ১টি এট্রিবিউট action ব্যবহার করেছি এবং তার value হিসেবে process.php ব্যবহার করেছি। এই action এট্রিবিউট এর কাজ হলো আপনি যখন submit বাটনে ক্লিক করবেন তখন কোন page -এ গিয়ে আপনার HTML Form টি process হবে তা বলে দিবে।
আমাদের এই ফর্ম এ submit বাটনের নাম দেওয়া হয়েছে Upload. এবং আরো ১টা গুরুত্বপূর্ন এট্রিবিউট ব্যবহার করা হয়েছে। যার নাম enctype এবং তার ভ্যালু হিসেবে দেওয়া হয়েছে multipart/form-data। মনে রাখতে হবে যে কোন ফাইল আপলোড করতে হলে অবশ্যই এই এট্রিবিউট ব্যবহার করতে হবে। 
এখন process.php পেজে যাওয়ার পর কিভাবে ঐ সিলেক্টকৃত ফাইলকে পাবেন? হ্যাঁ, তার জন্য আপনাকে $_FILES Variable এর সাহায্য নিতে হবে।
এই $_FILES Variable মূলত একটি multidimensional array Return করে। যেমন- আপনি যদি process.php পেজে এই $_FILES Variable কে print_r() করেন-

<?php
echo '<pre>';
print_r($_FILES);
echo '</pre>';
?>

তাহলে output হিসেবে দেখতে পারবেন –

এখানে দেখা যাচ্ছে যে, $_FILES একটা multidimensional Array Return করেছে যার ভেতরে profile_image নামে আরো একটা Array রয়েছে। এই Array এর ৫ টা key এবং সেই key গুলোর value ও রয়েছে।
যেমন- name, type, tmp_name, error, size
এই প্রত্যেকটি key এর এক একটা অর্থ রয়েছে। যেমন-
১। name – এর মানে হলো আপনি যে ফাইলটি আপলোড করেছেন তার নামটা কি। এই ক্ষেত্রে আমাদের আপলোডকৃত ফাইলের নাম দেখাচ্ছে files-super-global-variable.jpg
২। type – আপনি যে ফাইলটি আপলোড করেছেন সেই ফাইলটি কোন type এর মানে
এই ফাইলটির extension কি .jpg, jpeg, .png, .gif নাকি অন্য কিছু।
৩। tmp_name – আপনি যখন কোন ফাইল আপলোড করেন তখন তা একটা temporary location এ গিয়ে আপলোড হয়। সেই location কোথায় তা জানার জন্য এই key টা ব্যবহার করা হয়।
৪। error – ফাইল আপলোড করার সময় যদি কোন Error থেকে থাকে তাহলে তা এই key এর মাধ্যমে দেখাবে। যেমন-
— যদি কোন Error না থাকে তাহলে এই key 0 (জিরো) দেখাবে যার মানে হচ্ছে কোন Error নেই
— যদি 1 দেখায় তার মানে হচ্ছে upload_max_filesize directive এ যে সাইজ টা উল্লেখ করা আছে তার চেয়ে আপনি অনেক বড় সাইজের ফাইল আপলোড করে ফেলেছেন।
— যদি 2 দেখায় তার মানে হচ্ছে MAX_FILE_SIZE directive এ যে সাইজ টা উল্লেখ করা আছে তার চেয়ে আপনি অনেক বড় সাইজের ফাইল আপলোড করে ফেলেছেন।
— যদি 3 দেখায় তার মানে হচ্ছে আপনি ফাইলটা একবার আপলোড করে আবার cancel করে ফেলেছেন বা ফাইলটি partially আপলোড হয়েছে।
— যদি 4 দেখায় তার মানে হচ্ছে আপনি কোন ফাইলই আপলোড করেননি।
— যদি 6 দেখায় তার মানে হচ্ছে temporary folder টা খুঁজে পাওয়া যাচ্ছে না।
— যদি 7 দেখায় তার মানে হচ্ছে ফাইলটি disk এ write করতে সমস্যা হচ্ছে।
— যদি 8 দেখায় তার মানে হচ্ছে PHP extension আপনার ফাইলটি আপলোড করেতে দিচ্ছে না।
৫। size – আপনি যে ফাইলটি আপলোড করেছেন তার size কত। মূলত size টা bytes হিসেবে দেখায়।
এখন আপনি যদি ফাইলের নামটা দেখতে চান তাহলে আপনাকে ব্যবহার করতে হবে-

echo $_FILES['profile_image']['name'];

যদি ফাইলের type টা দেখতে চান তাহলে –

echo $_FILES['profile_image']['type'];

যদি temporary location টা দেখতে চান তাহলে –

echo $_FILES['profile_image']['tmp_name'];

যদি ফাইলের সাইজটা দেখতে চান তাহলে –

echo $_FILES['profile_image']['size'];

যদি, কোন এরর আছে কিনা তা দেখতে চান তাহলে ব্যবহার করতে হবে –

echo $_FILES['profile_image']['error'];

৬) $_COOKIE

Cookies একটা text files যার মাধ্যমে আপনি কোন data computer এ সংরক্ষন করতে পারবেন। server এর মাধ্যমে এই Cookies ফাইল তৈরী করা হয়। এটা মূলত user কে identify, Session management, Tracking / Analytics এর জন্য ব্যবহার করা হয়।

Cookies কিভাবে কাজ করে?

১। প্রথমে Server একটা Cookies ফাইল পাঠায় আপনার browser এ। এ Cookies -এ থাকতে পারে কোন নাম বা অন্য কোন তথ্য।
২। browser যখন Cookies ফাইলটা গ্রহন করে তখন তা আপনার Computer এ সংরক্ষন করে রাখে।
৩। পরবর্তীতে আপনি যখন browser এর মাধ্যমে একই Server এ কোন request পাঠাবেন তখন browser ঐ Cookies ফাইল আবার Server এ পাঠায় এবং Server তখন এই Cookies ফাইলটা ব্যবহার করে আপনাকে identify করার জন্য।

Cookies কিভাবে তৈরী করবেন?

setcookie() ফাংশনের মাধ্যমে Cookies তৈরী করা হয় যা opening <html> ট্যাগের আগে call করতে হবে । এই ফাংশনের ৬টি arguments রয়েছে। এগুেলো হচ্ছে-
১। Name – প্রথম argument টা ব্যবহার করা হয় Cookies নাম দেওয়ার জন্য।
২। Value − দ্বিতীয় argument টা ব্যবহার করা হয় এই Cookies নামের কোন একটা Value দেওয়ার জন্য।
৩। Expiry − তৃতীয় argument টা ব্যবহার করা হয় কখন আপনার এই Cookies টা Expire হবে। আপনি যদিসময় উল্লেখ করে না দেন তাহলে আপনি যখন ব্রাউজার বন্ধ করে দিবেন তখনই Expire হয়ে যাবে।
৪। Path − চতুর্থ argument টা ব্যবহার করা হয় কোন directories এর জন্য এই Cookies টা সংরক্ষন হবে। আপনি যদি ফরওয়ার্ড স্ল্যাশ ( / ) ব্যবহার করেন তাহলে সব directories এর জন্য এই Cookies টা সংরক্ষন হবে।
৫। Domain − পঞ্চম argument টা ব্যবহার করা হয় যে, কোন Domain এ এই Cookies টা সংরক্ষন হবে।
৬। Security − ষষ্ঠ argument টা ব্যবহার করা হয় ০ অথবা ১ যার মানে হলো আপনি যদি ০ ব্যবহার করেন তাহলে এই Cookies টা regular HTTP কানেকশনের মাধ্যমে পাঠাবে আর যদি ১ ব্যবহার করেন তাহলে HTTPS কানেকশনের মাধ্যমে পাঠাবে।
৭। Httponly – ৭ম argument টা ব্যবহার করা হয় যে client side scripting languages যেমন- JavaScript কি cookies access করতে পারবে। যদি আপনি এই argument এর value true দিয়ে দেন তাহলে JavaScript cookies access করতে পারবে না।

এখানে মনে রাখতে হবে যে name এবং value আপনাকে দিয়ে আসতেই হবে অন্য Arguments গুলো না দিলেও চলবে।

চলুন এবার আমরা ২টা Cookies তৈরী করি।

<?php
setcookie("name", "amar course", time()+3600, "/","", 0);
setcookie("developer", "shibbir ahmed", time()+3600, "/", "", 0);
?>

এখানে আমরা ২ টি cookies declare করছি যাদের নাম হলো name এবং developer। এই ২টি cookies এর value দেওয়া হয়েছে amar course এবং shibbir ahmed। আর এই ২টি cookies expire হবে ১ ঘন্টা পর কারন তৃতীয় argument টি খেয়াল করুন যেটি আমরা ব্যবহার করেছি-

time()+3600

এর মানে হলো বর্তমান সময় + ৩৬০০ সেকেন্ড।

একটা cookies ফাইলে আপনি সর্বোচ্চ 4KB ডাটা সংরক্ষন করতে পারবেন।

চতুর্থ argument এ আমরা ফরওয়ার্ড স্ল্যাশ (/) ব্যবহার করেছি কারন আমরা চাই আমাদের ওয়েবসাইটের সব directories এই cookies টি available থাকবে।
পঞ্চম argument এ আমরা কোন কিছু ব্যবহার করিনি তার কারন হলো আমরা চাই এই Domain এর নামটা খালি থাকুক।
শেষ argument এ আমরা ০ ব্যবহার করেছি কারন আমরা চাই এই Cookies টা regular HTTP কানেকশনের মাধ্যমে পাঠাবে।

Cookies Value কিভাবে দেখাবো?

Cookies তো তৈরী করলাম এখন এই Cookies কে কিভাবে Access করব বা আমাদের ব্রাউজারে দেখাবো? হ্যাঁ, তার জন্য আমাদের এই Super Global Variable $_COOKIE ব্যবহার করতে হবে। যেমন- আমাদের নিশ্চই মনে আছে যে আমার ২ টি Cookies তৈরী করেছিলাম যাদের নাম ছিল – name এবং developer. এখন এই ২ টি Cookies এর Value দেখাতে হলে আমাদেরকে লিখতে হবে-

<?php
echo $_COOKIE['name'];
echo '<br/>';
echo $_COOKIE['developer'];
?>

তাহলে output হিসেবে আমরা দেখতে পাবো-

Cookies নাম এবং তার Value আছে কি না?

আপনার এই Cookies টা আসলেই আছে কিনা তা যাচা্ই করার জন্য আপনি isset() function ব্যবহার করতে পারেন। isset() function এর কাজ হলো কোন variable set করা আছে কিনা এবং এর একটা Value আছে কিনা।

if( isset($_COOKIE["name"]) ) {
    echo $_COOKIE['name'];
}

উপরে কোডের মানে হলো যে- আপনি পরীক্ষা করছেন যে name নামে কোন Cookies আছে কিনা এবং তার কোন Value আছে কিনা। যদি Cookies টা থাকে এবং তার Value থাকে তাহলে আমাদেরকে দেখাবে-

amar course

Cookies কে ডিলিট করব কিভাবে?

কোন Cookies কে ডিলিট করতে হলে আপনি যখন Cookies Declare করেছেন তার তৃতীয় Arguments হিসেবে একটা সময় দিয়েছিলেন, তাই না? মানে এটা- time()+3600
এখন আপনাকে শুধুমাত্র এই সময়টাকে বর্তমান সময় থেকে পিছিয়ে দিতে হবে, ব্যাস তাহলে Cookies ডিলিট হয়ে যাবে। যেমন-

setcookie( "name", "", time()- 60, "/","", 0);
setcookie( "developer", "", time()- 60, "/","", 0);

এখানে দেখতে পাচ্ছেন যে আমরা তৃতীয় Arguments এ এই কোডটি ব্যবহার করেছি-

time()- 60

যার মানে হলো বর্তমান সময় থেকে ৬০ সেকন্ডে পিছিয়ে নেওয়া।
এখন আপনি যদি ব্রাউজার রিলোড দেওয়ার পর এই লাইনটা দিয়ে চেক করেন তাহলে আগের বারের মত কোন output দেখতে পাবেন না-

if( isset($_COOKIE["name"]) ) {
    echo $_COOKIE['name'];
}

এখন আপনি কোন output দেখতে পাবেন না কারন আপনি তো Cookies ডিলিট করে দিয়েছেন।

৭) $_SESSION

session হলো একটা super global variable যা server এ data সংরক্ষন করার জন্য ব্যবহার করা হয়। এই data আপনি আপনার ওয়েবসাইটে অনেকগুলো পেজে ব্যবহার করতে পারবেন। মনে রাখাবনে যে- session আপনার কম্পিউটারে সংরক্ষিত হবে না যেমনটা cookies করে থাকে।
প্রত্যেকটি session এর একটা unique id রয়েছে যা SID নামে পরিচিত এবং যার দৈর্ঘ্য হলো ৩২ যা hexadecimal numbers যেমন- 3c7foj34c3jj973hjkop2fc937e3443 আকারে দেখায়।
session এর মাধ্যমে আপনি বড় কোন ডাটা সংরক্ষন করতে পারবেন। মনে রাখবেন এই session এ ডাটাগুলো তখনই মুছে যাবে যখন আপনি ব্রাউজার বন্ধ করে দিবেন অথবা unset() অথবা session_destroy() এর মাধ্যমে মুছে দিবেন। আপনি যদি তা না চান তাহলে session এর ডাটাগুলো database এ সংরক্ষন করতে পারেন।

কেন এবং কখন session ব্যবহার করবেন ?

১। আপনি যদি চান যে কোন একটা user এর username বা userId সংরক্ষন করবনে server তখন এই Session ব্যবহার করতে পারবেন যা cookies থেকে অনেক secure ।
২। আপনি যদি একটা পেজ থেকে অন্য আরেকটি পেজে ডাটা আদান প্রদান করতে চান।
৩। cookies যদি কোন ব্রাউজারে support না করে তাহলে alternative হিসেবে এই Session ব্যবহার করতে পারেন।
৪। আপনি কোন ই-কমার্স সাইটের জন্য শপিং কার্টের জন্য এই Session ব্যবহার করতে পারেন।
৫। আরো অনেক ব্যবহার রয়েছে যা আপনি কাজ করতে করতে জানতে পারবেন।

Session কিভাবে কাজ করে?

১। PHP প্রথমে নির্দিষ্ট একটা session এর জন্য unique identifier তৈরী করে যা ৩২ অক্ষরের random একটা hexadecimal numbers দেখায়, যেমন – 3c748sd4c3jj973hjkop2f210se3443
২। তারপর একটা cookie যার নাম হলো PHPSESSID যা আপনার কম্পিউটারে এই session unique identifier কে সংরক্ষিত করে রাখে ।
৩। তারপর একটা ফাইল server এ automatically তৈরী হয়ে যায় যা temporary directory তে সংরক্ষতি থাকে এবং এই ফাইলের ভিতরে আপনি সেই session unique identifier নাম্বারটি দেখতে পারবেন। তবে এই নাম্বারটির আগে একটি prefix থাকে। যেমন- sess_3c748sd4c3jj973hjkop2f210se3443

Session কিভাবে তৈরী করব?

Session নিয়ে কাজ করতে হলে অথবা কোন একটা Session তৈরী করতে হলে প্রথমেই আপনাকে session_start() নামে একটা function কে call করতে হবে। তারপর এই Session এর জন্য একটা key এবং সেই key এর একটা value দিয়ে আসতে হবে। মনে রাখতে হবে এই key টা $_SESSION array variable এ set করতে হবে। যেমন-

<?php session_start(); ?>
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>$_SESSION Super Global Variable</title>
</head>
<body>
<?php
$_SESSION['site_name'] = 'Amar Course';
?>
</body>
</html>
</body>
</html>

আপনি দেখতে পাচ্ছেন যে session_start() নামে একটা function কে আমরা html ট্যাগরে একেবারে উপরে লিখেছি। হ্যাঁ, আপনাকে এটাই করতে হবে। তা না হলে একটা এরর দেখাবে ।
তারপর PHP ব্লকের ভিতর আমরা site_name নামে একটা Session key ব্যবহার করেছি যার value হলো Amar Course।
এভাবে আপনি যত খুশি Session তৈরী করতে পারবেন।

Session এর value কিভাবে দেখাব?

Session একবার তৈরী বা registered করার পর আপনাকে তো এই Session এর value টা দেখাতে হবে, তাই না? তার জন্য আপনাকে ঐ key টা ব্যবহার করতে হবে যেই key দিয়ে আপনি Session টা তৈরী বা registered করেছেন। আর দেখানোর জন্য আপানাকে $_SESSION array variable এর সাহায্য নিতে হবে। যেমন-

<?php
echo $_SESSION['site_name'];
?>

এখন আপনি যদি ব্রাউজারকে লোড দেন তাহলে দেখতে পারেন-

Amar Course

কেন Amar Course? কারন আপনি যে Session registered করছেন তার value দিয়েছিলেন Amar Course।
মজার কথা হলো আপনি এই registered কৃত Session এর value টা অন্য আরেকটি পেজেও পেতে পারেন। ধরুন আমরা নতুন একটা ফাইল তৈরী করলাম যার নাম দিলাম about.php
এখন এই about.php পেজে গিয়ে প্রথমেই আপনাকে যে কাজটি করতে হবে তা হলো session_start() নামে function টি ব্যবহার করা html ট্যাগের  একেবারে উপরে। তারপর আপনি যেখানেই এই registered কৃত Session কে দেখাতে চান না কেন সেখানেই এই লাইন লিখবনে-

<?php
echo $_SESSION['site_name'];
?>

ব্যস! আপনি আপনার registered কৃত Session এর value টা দেখতে পাবেন আর তা হলো-

Amar Course

এখানে একটা জিনিস লক্ষ্য করেছেন নিশ্চয়ই যে আমরা কিন্তু নতুন করে কোন Session registered করি নি। কারন এটা তো আমরা আগেই একবার করে এসেছি
কিন্তু আপনি যদি নতুন একটা Session Key কে registered করতে চান তাহলে আপনাকে আবার নতুন Key দিয়ে Session কে registered করতে হবে।

Session কে কিভাবে ডিলিট করব?

Php তে যত session আপনি registered করছেন সবগুলোকে একসাথে যদি ডিলিট করতে চান তাহলে আপনাকে session_destroy() function কে call করতে হবে। যেমন-

<?php
session_destroy();
?>

এখন ব্রাউজারে যদি আপনি আপনার ফাইলটাকে লোড দেন তাহলে আপনি কোন session এর value দেখতে পারেন না।
কোন নির্দিষ্ট session registered করা এবং তার value আছে কি না তা চেক করার জন্য আপনি isset() ফাংশনটা ব্যবহার করতে পারেন। যেমন- আমরা এই মাত্র আমাদের site_name session টা ডিলিট করে দিয়েছি session_destroy() function এর মাধ্যমে। এখন যদি এই session কে চেক করতে চান যে এর অস্তিত্ব আছে কি না তাহলে আপনি এই কোড ব্যবহার করতে পারেন। যেমন-

<?php
if( isset($_SESSION['site_name']) && $_SESSION['site_name'] != '' ) {
    echo $_SESSION['site_name'];
} else {
    echo 'Session is not available becuase of you have deleted it!';
}
?>

আপনি যদি সব session কে ডিলিট না করে কেবল মাত্র একটি নির্দিষ্ট session কে ডিলিট করতে চান তাহলে unset() function ব্যবহার করতে হবে। এই unset() function এর ভিতরে যে session টি ডিলিট করবেন তার key বলে দিতে হবে। যেমন-

unset($_SESSION['site_name']);

মনে রাখবেন যে কোন PHP ফাইলে session নিয়ে কাজ করতে হলে প্রথমেই আপনাকে session_start(); ফাংশনটা call করতে হবে ফাইলের মধ্যে সবার উপরে।

৮) $_REQUEST

$_REQUEST হলো একটি super global variable যা কোন একটি HTML এর Form থেকে data সংগ্রহ করার জন্য ব্যবহার করা হয়। যেমন- আমরা একটি html এর login form তৈরী করি-

<!DOCTYPE html>
<html>
<head>
	<title>$_REQUEST Super Global Array</title>
</head>
<body>
	<form action="process.php" method="post" accept-charset="utf-8">
		<table border="1" cellpadding="5">
			<caption><h1>User Login Panel</h1></caption>
			<tbody>
				<tr>
					<td>Username</td>
					<td><input type="text" name="username"></td>
				</tr>
				<tr>
					<td>Password</td>
					<td><input type="password" name="password"></td>
				</tr>
				<tr>
					<td align="right"><input type="submit" name="submit" value="Login"></td>
				</tr>
			</tbody>
		</table>
	</form>
</body>
</html>

এর Output হিসেবে আমরা দেখতে পাবো –

 
এখানে আমরা ২টি input field ব্যবহার করেছি। একটা হলো username এর জন্য এবং অন্যটি password এর জন্য এবং সবশেষ একটা submit বাটন যার type হলো submit। এখন আপনি যদি Form পূরণ করে submit বাটনে ক্লিক করেন তাহলে process.php পেজ এ চলে যাবেন। কেন process.php পেজে?
কারন এই লাইনটি লক্ষ্য করুন-

<form action="process.php" method="post" accept-charset="utf-8">

এখানে আমরা action এট্রিবিউট এর value হিসেবে process.php দিয়েছি। আর তার জন্যই এই process.php পেজে চলে যাবে।
এখন এই process.php পেজে Form এর input field গুলো পাওয়ার জন্য আপনি $_REQUEST super global variable টি ব্যবহার করতে পারেন। যেমন- আপনি যদি username টি দেখতে চান তাহলে আপনাকে ব্যবহার করতে হবে-

echo $_REQUEST['username'];

এখন আপনার ব্রাউজারটি লোড দেন এবং দেখতে পাবেন যে username field এ যে value দিয়েছিলেন তাই এখন দেখাচ্ছে।

কিন্তু আপনারা লক্ষ্য করবেন যে আমরা তো form ট্যাগের method হিসেবে post method টা ব্যবহার করেছি তাহলে কেন $_POST[‘username] ব্যবহার করলাম না? হ্যাঁ, আপনি $_POST[‘username] করলেও পারতেন।
আপনি $_GET, $_POST এবং $_COOKIE এর মাধ্যমে যে ডাটা গুলো receive করেন, এই $_REQUEST এর মাধ্যমেও তাই করতে পারবেন।

৯) $_ENV

আপনার web server থেকে environment variables গুলো দেখানোর জন্য এই Super Global Variable টি ব্যবহার করা হয়।
যেহেতু এই Super Global Variable টি একটি Associative Array Return করে তার জন্য আমরা এই $_ENV Super Global Variable টির সব key দেখার জন্য ব্যবহার করতে পারি-

<?php
echo '<pre>';
print_r($_ENV);
echo '</pre>';
?>

এখন আপনি আপনার Web Server অনুযায়ী environment variables গুলো দেখতে পারবেন।
আপনি যদি environment variable এর value দেখতে চান তাহলে getenv() ফাংশনটি ব্যবহার করতে পারেন।

Leave a Comment