পিএইচপি গ্লোবাল ভ্যারিয়েবল
পিএইচপির ভার্সন 4.1.0 এ সুপারগ্লোবাল ভ্যারিয়েবলের সূচনা হয়। এই ভ্যারিয়েবলগুলো পিএইচপিতে বিল্ট-ইন থাকার কারণে স্ক্রিপ্ট এর যেকোনো স্কোপ থেকেই এগুলোকে এক্সেস/ব্যবহার করা যায়।
পিএইচপি সুপারগ্লোবাল
পিএইচপি সেট-আপের সময়ই কিছু পূর্ব সংজ্ঞায়িত ভ্যারিয়েবল পিএইচপির সাথে দেওয়া থাকে এগুলোই হচ্ছে পিএইচপির সুপারগ্লোবাল(Super global) ভ্যারিয়েবল।
নাম শুনেই বুঝা যাচ্ছে যে, কোন ধরনের স্কোপ বিবেচনা না করেই এগুলোকে যেকোন স্ক্রিপ্ট বা স্ক্রিপ্ট এর যেকোনো স্থান থেকে ব্যবহার/এক্সেস করা যায়। যেমন- আপনি ইচ্ছা করলে বিশেষ কোনো কিছু ছাড়াই এগুলোকে ফাংশন, ক্লাস, অথবা ফাইল থেকে ব্যবহার করতে পারবেন।
নিম্নে পিএইচপির সুপারগ্লোবাল ভ্যারিয়েবলগুলো উল্লেখ করা হলোঃ
$GLOBALS
গ্লোবাল ভ্যারিয়েবলসমূহকে যেকোনো স্কোপ থেকে এক্সেস করার জন্য এটি ব্যবহৃত হয়।
$_SERVER
Header, Path এবং Script location সম্মন্ধে বিভিন্ন তথ্য পাওয়ার জন্য এটি ব্যবহৃত হয়।
$_REQUEST
ফর্ম সাবমিট করার পরে ডেটা কালেক্টশন করার জন্য এটি ব্যবহৃত হয়।
$_GET
method="get" এর মাধ্যমে এইচটিএমএল ফর্ম সাবমিট করার পরে ইনপুট ডেটা কালেক্টশন করার জন্য এটি ব্যবহৃত হয়।
$_POST
method="post" এর মাধ্যমে এইচটিএমএল ফর্ম সাবমিট করার পরে ডেটা কালেক্টশন করার জন্য এটি ব্যবহৃত হয়।
$_FILES
এটি একটি Two-dimensional associative array। যা ফাইল আপলোড এর সকল তথ্য ধারণ করে।
$_ENV
Environment variable
$_COOKIE
ইউজার সনাক্ত করার জন্য কুকি এক্সেস করতে এটি ব্যবহৃত হয়।
$_SESSION
Session ভ্যারিয়েবলকে এক্সেস করার জন্য এটি ব্যবহৃত হয়।
বিঃদ্রঃ সুপারগ্লোবাল ভ্যারিয়েবলসমূহ এসোসিয়েটিভ এ্যারে এসোসিয়েটিভ এ্যারের এলিমেন্ট সমূহ key:value জোড়ায় জোড়ায় থাকে। এসোসিয়েটিভ এ্যারে সম্মন্ধে আরও জানতে পিএইচপি এ্যারে অধ্যায় ভিজিট করুন।
এই অধ্যায়ে কিছু সুপারগ্লোবাল ভ্যারিয়েবল সম্মন্ধে আলোচনা করা হয়েছে। বাকীগুলো সংশ্লিষ্ট অধ্যায়ে আলোচনা করা হবে।
পিএইচপি $GLOBALS
$GLOBALS
হচ্ছে পিএইচপি সুপারগ্লোবাল ভ্যারিয়েবল এবং associative array। যেকোনো স্থান(ফাংশন এবং মেথড এর মধ্য থেকেও) থেকে গ্লোবাল ভ্যারিয়েবলকে এক্সেস করার জন্য $GLOBALS
কিওয়ার্ড ব্যাবহার করা হয়।
পিএইচপি সকল গ্লোবাল ভ্যারিয়েবলকে $GLOBALS[index]
array এর মধ্যে জমা রাখে। index এর মধ্যে ভ্যারিয়েবলের নাম জমা রাখে।
নিচের উদাহরণে আমরা দেখবো, কিভাবে সুপারগ্লোবাল ভ্যারিয়েবল $GLOBALS
কে ব্যবহার করা যায়ঃ
<!DOCTYPE html>
<html>
<head>
<title>পিএইচপি উদাহরণ</title>
</head>
<body>
<?php
$numberOne = 55;
$numberTwo = 44;
function sum(){
$GLOBALS['total'] = $GLOBALS['numberOne'] + $GLOBALS['numberTwo'];
}
sum();
echo $total;
?>
</body>
</html>
99
উপরের উদাহরণে, z ভ্যারিয়েবলটি $GLOBALS array এর মধ্যে অবস্থান করার কারণে এটাকে ফাংশনের বাইরে থেকেও এক্সেস করা যাচ্ছে!
পিএইচপি $_SERVER
$_SERVER
হচ্ছে পিএইচপি সুপারগ্লোবাল ভ্যারিয়েবল যা header, path এবং script location সম্মন্ধে বিভিন্ন তথ্য ধারণ করে।
নিচের উদাহরণে আমরা দেখবো, কিভাবে $_SERVER
ভ্যারিয়েবলকে ব্যবহার করা যায়ঃ
<!DOCTYPE html>
<html>
<head>
<title>পিএইচপি উদাহরণ</title>
</head>
<body>
<?php
echo $_SERVER['PHP_SELF']. "<br>";
echo $_SERVER['SERVER_NAME']. "<br>";
echo $_SERVER['HTTP_HOST']. "<br>";
echo $_SERVER['HTTP_REFERER']. "<br>";
echo $_SERVER['HTTP_USER_AGENT']. "<br>";
echo $_SERVER['SCRIPT_NAME'];
?>
</body>
</html>
/php/php-super-globals.php
sattacademy.org
sattacademy.org
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
/php/php-super-globals.php
নিচের টেবিলে $_SERVER
ভ্যারিয়েবলের মধ্যে ব্যবহৃত অধিকাংশ কনস্ট্যান্ট এর সংক্ষিপ্ত আলোচনা করা হলোঃ
$_SERVER['PHP_SELF']
সম্প্রতি যে স্ক্রিপ্ট সম্পাদিত(execution) হয় তার ফাইলের নাম রিটার্ন করে।
$_SERVER['GATEWAY_INTERFACE']
সার্ভার যে কমন গেটওয়ে ইন্টারফেস(CGI) ব্যবহার করে তার ভার্সন রিটার্ন করে।
$_SERVER['SERVER_ADDR']
হোস্ট সার্ভারের IP এড্রেস রিটার্ন করে।
$_SERVER['SERVER_NAME']
হোস্ট সার্ভারের নাম রিটার্ন করে। যেমন- www.sattacademy.com
$_SERVER['SERVER_SOFTWARE']
সার্ভারের জন্য ব্যবহৃত সফটওয়্যার এবং এর ভার্সন রিটার্ন করে। (যেমন- Apache/2.4.25 )
$_SERVER['SERVER_PROTOCOL']
ইনফরমেশন প্রোটোকলের নাম এবং রিভিশন(revision) রিটার্ন করে। (যেমন HTTP/1.1)
$_SERVER['REQUEST_METHOD']
কোনো পেজকে এক্সেস করার জন্য এর রিকুয়েস্ট মেথড(যেমন- POST) রিটার্ন করে।
$_SERVER['REQUEST_TIME']
রিকুয়েস্ট শুরু হওয়ার টাইমস্ট্যাম্প রিটার্ন করে। (যেমন- 1377687496)
$_SERVER['QUERY_STRING']
যদি কোনো পেজ কুয়েরি স্ট্রিং দ্বারা এক্সেস করা হয় তাহলে কুয়েরি স্ট্রিং রিটার্ন করে।
$_SERVER['HTTP_ACCEPT']
বর্তমান রিকুয়েস্ট থেকে Accept header রিটার্ন করে।
$_SERVER['HTTP_ACCEPT_CHARSET']
বর্তমান রিকুয়েস্ট থেকে Accept_Charset header রিটার্ন করে। (যেমন utf-8,ISO-8859-1)
$_SERVER['HTTP_HOST']
বর্তমান রিকুয়েস্ট থেকে Host header রিটার্ন করে।
$_SERVER['HTTP_REFERER']
বর্তমান পেজের সম্পূর্ণ URL রিটার্ন করে (বিশ্বাসযোগ্য নয় কারন সকল user-agents এ সাপোর্ট করে না)
$_SERVER['HTTPS']
স্ক্রিপ্টটি কি সিকিউর HTTP প্রোটোকলের মধ্য দিয়ে কুয়েরি হচ্ছে কিনা?
$_SERVER['REMOTE_ADDR']
ব্যবহারকারী যেখান থেকে বর্তমান পেজটি ভিউ করছে সেই IP এড্রেস রিটার্ন করে।
$_SERVER['REMOTE_HOST']
ব্যবহারকারী যেখান থেকে বর্তমান পেজটি ভিউ করছে সেই Host নাম রিটার্ন করে।
$_SERVER['REMOTE_PORT']
ব্যবহারকারীর ডিভাইস থেকে সার্ভারের সাথে যোগাযোগ(communicate) করার জন্য যে পোর্ট(port) ব্যবহার হচ্ছে সেটিকে রিটার্ন করে।
$_SERVER['SCRIPT_FILENAME']
বর্তমানে যে স্ক্রিপ্টটি এক্সিকিউট হচ্ছে সেটির absolute pathname রিটার্ন করে।
$_SERVER['SERVER_PORT']
যোগাযোগের জন্য ওয়েব সার্ভারের সার্ভার মেশিন যে পোর্ট ব্যবহার করে সেটি রিটার্ন করে। (যেমন 80)
$_SERVER['SERVER_SIGNATURE']
server-generated পেজের সাথে যুক্ত সার্ভার ভার্সন এবং ভার্চুয়াল হোস্ট এর নাম রিটার্ন করে।
$_SERVER['PATH_TRANSLATED']
বর্তমান স্ক্রিপ্টের ফাইল সিস্টেম বেস(base) path রিটার্ন করে।
$_SERVER['SCRIPT_NAME']
কারেন্ট স্ক্রিপ্টের পথ রিটার্ন করে।
$_SERVER['SCRIPT_URI']
কারেন্ট পেজের URI কে রিটার্ন করে।
পিএইচপি $_REQUEST
ফর্ম সাবমিট করার পরে ডেটা কালেক্টশন করার জন্য সুপারগ্লোবাল ভ্যারিয়েবল $_REQUEST
ব্যবহার করা হয়।
নিচের উদাহরণে একটি ইনপুট ফিল্ড ও একটি সাবমিট বাটনসহ একটি ফর্ম দেখা যাচ্ছে। যখন কোনো ইউজার ফর্ম ডেটা সাবমিট করার জন্য "Submit" বাটনে ক্লিক করে, তখন এই ডেটা প্রসেস করার জন্য <form> ট্যাগে action এট্রিবিউট এ নির্দেশিত ফাইলের কাছে পাঠানো হয়।
এই উদাহরণে সাবমিটেড ডেটা প্রসেস করার জন্য এই ফাইলকেই নির্দেশনা দিয়েছে। আপনি চাইলে অন্য ফাইলের মাধ্যমেও ডেটাকে প্রসেস করতে পারেন, শুধু action এট্রিবিউটে = চিহ্নের ডান পাশে আপনার ফাইলের নামটি দিয়ে দেন। এরপরে আপনি ইচ্ছা করলে সুপারগ্লোবাল ভ্যারিয়েবল $_REQUEST এর মাধ্যমে ডেটা কালেক্ট করতে পারেনঃ
<!DOCTYPE html>
<html>
<head>
<title>পিএইচপি উদাহরণ</title>
</head>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
নামঃ <input type="text" name="fullname">
<input type="submit" value="Name Submit">
</form>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// ইনপুট ফিল্ডের ভ্যালু কালেক্ট
$name = $_REQUEST['fullname'];
if (empty($name)) {
echo "নাম পূরন করা হয়নি";
} else {
echo "আপনার পূরনকৃত নামঃ". $name;
}
}
?>
</body>
</html>
পিএইচপি $_GET
method="get" এর মাধ্যমে এইচটিএমএল ফর্ম সাবমিট করার পরে ইনপুট ডেটা কালেক্টশন করার জন্য সুপার গ্লোবাল ভ্যারিয়েবল $_GET ব্যবহৃত হয়।
URL এর মধ্য দিয়ে পাঠানো ডেটাও $_GET এর মাধ্যমে কালেক্ট করা যায়।
মনে করুন আপনার এইচটিএমএল পেজে প্যারমিটার সহ হাইপারলিংক আছেঃ
<html>
<body>
<a href="get.php?subject=PHP&web=Sattacademy.com">Test $GET</a>
</body>
</html>
যখন কোনো ইউজার "Test $GET" লিংক এ ক্লিক করে, তখন প্যারামিটার "subject" এবং "web" কে "test_get.php" এর কাছে পাঠানো হয়, এবং এরপরে আপনি "test_get.php" এর মধ্যে $_GET এর সাহায্যে তাদের ভ্যালুগুলোকে এক্সেস করতে পারবেন।
নিচের উদাহরণে "test_get.php"এর মধ্যে ব্যবহৃত কোড দেখানো হলোঃ
<!DOCTYPE html>
<html>
<head>
<title>পিএইচপি উদাহরণ</title>
</head>
<body>
<?php
echo $_GET['web'] . " এ " . $_GET['subject'] . " শিখুন।";
?>
</body>
</html>
পিএইচপি $_POST
method="post" এর মাধ্যমে এইচটিএমএল ফর্ম সাবমিট করার পরে ডেটা কালেক্টশন করার জন্য সুপারগ্লোবাল ভ্যারিয়েবল $_POST ব্যপকভাবে ব্যবহৃত হয়। বিশেষকরে ভ্যারিয়েবল পাস(pass) করানোর জন্য $_POST এর ব্যবহার চোখে পড়ার মত।
নিচের উদাহরণে একটি ইনপুট ফিল্ড ও একটি সাবমিট বাটনসহ একটি ফর্ম দেখা যাচ্ছে। যখন কোনো ইউজার ফর্ম ডেটা সাবমিট করার জন্য "Submit" বাটনে ক্লিক করে, তখন এই ডেটা প্রসেস করার জন্য <form> ট্যাগে action এট্রিবিউট এ নির্দেশিত ফাইলের কাছে পাঠানো হয়।
এই উদাহরণে সাবমিটেড ডেটা প্রসেস করার জন্য এই ফাইলকেই নির্দেশনা দিয়েছি। আপনি চাইলে অন্য ফাইলের মাধ্যমেও ডেটাকে প্রসেস করতে পারেন, শুধু action এট্রিবিউট = চিহ্নের ডান পাশে আপনার ফাইলের নামটি দিয়ে দেন। এরপরে আপনি ইচ্ছা করলে সুপারগ্লোবাল ভ্যারিয়েবল $_POST এর মাধ্যমে ইনপুট ফিল্ডের ডেটা কালেক্ট করতে পারেনঃ
<!DOCTYPE html>
<html>
<head>
<title>পিএইচপি উদাহরণ</title>
</head>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
নামঃ <input type="text" name="fullname">
<input type="submit" value="Name Submit">
</form>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// ইনপুট ফিল্ডের ভ্যালু কালেক্ট
$name = $_POST['fullname'];
if (empty($name)) {
echo "নাম পূরন করা হয়নি";
} else {
echo "আপনার পূরনকৃত নামঃ". $name;
}
}
?>
</body>
</html>
টিপসঃ পিএইচপি Form অধ্যায়ে $_POST and $_GET সম্মন্ধে আরো অধিক আলোচনা করা হয়েছে।