PHP 全局变量 - 超全局变量

超全局变量在 PHP 4.1.0 中引入,是在全部作用域中始终可用的内置变量。

PHP 全局变量 - 超全局变量

PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可以访问它们。

这些超全局变量是:

  • $GLOBALS
  • $_SERVER
  • $_REQUEST
  • $_POST
  • $_GET
  • $_FILES
  • $_ENV
  • $_COOKIE
  • $_SESSION

本节会介绍一些超全局变量,并会在稍后的章节讲解其他的超全局变量。

$GLOBALS — 引用全局作用域中可用的全部变量

$GLOBALS 这种全局变量用于在 PHP 脚本中的任意位置访问全局变量(从函数或方法中均可)。

PHP 在名为 $GLOBALS[index] 的数组中存储了所有全局变量。变量的名字就是数组的键。

এই উদাহরণটি দেখিয়েছে কিভাবে সুপার গ্লোবাল ভেক্টর $GLOBALS-এর ব্যবহার করা যায়:

ইনস্ট্রাকশন

<?php 
$x = 75; 
$y = 25;
function addition() { 
  $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y']; 
}
addition(); 
echo $z; 
?>

ইনস্ট্রাকশন চালু করুন

উপরোক্ত উদাহরণে, z $GLOBALS এর একটি ভেক্টর হলে, তাই ফাংশনের বাইরেও তা পরিবর্তনযোগ্য

PHP $_SERVER

$_SERVER এই সুপার গ্লোবাল ভেক্টর হল যা হেডার, পথ এবং স্ক্রিপ্ট অবস্থান সম্পর্কিত তথ্য সংরক্ষণ করে。

এই উদাহরণটি দেখিয়েছে কিভাবে $_SERVER-এর কিছু উপাদানকে ব্যবহার করা যায়:

ইনস্ট্রাকশন

<?php 
echo $_SERVER['PHP_SELF'];
echo "<br>";
echo $_SERVER['SERVER_NAME'];
echo "<br>";
echo $_SERVER['HTTP_HOST'];
echo "<br>";
echo $_SERVER['HTTP_REFERER'];
echo "<br>";
echo $_SERVER['HTTP_USER_AGENT'];
echo "<br>";
echo $_SERVER['SCRIPT_NAME'];
?>

ইনস্ট্রাকশন চালু করুন

নিচের টাবলে, আপনি $_SERVER-তে পরিদর্শন করতে পারেন সবচেয়ে মূল্যবান এলিমেন্টগুলো তালিকাভুক্ত হয়েছে:

এলিমেন্ট/কোড বর্ণনা
$_SERVER['PHP_SELF'] বর্তমানে চলতে থাকা স্ক্রিপ্টের ফাইলনামকে ফিরিয়ে দেয়。
$_SERVER['GATEWAY_INTERFACE'] সার্ভারের CGI নিয়মনীতির সংস্করণকে ফিরিয়ে দেয়。
$_SERVER['SERVER_ADDR'] বর্তমানে স্ক্রিপ্ট চলতে থাকা সার্ভারের IP-অ্যাড্রেসকে ফিরিয়ে দেয়。
$_SERVER['SERVER_NAME'] বর্তমানে স্ক্রিপ্ট চলতে থাকা সার্ভারের হোস্টনেমকে ফিরিয়ে দেয় (উদাহরণ: www.codew3c.com)
$_SERVER['SERVER_SOFTWARE'] সার্ভারের পরিচয় শব্দকে ফিরিয়ে দেয় (উদাহরণ: Apache/2.2.24)
$_SERVER['SERVER_PROTOCOL'] পৃষ্ঠা পরিদর্শন করার সময় ব্যবহৃত কমিউনিকেশন প্রোটোকলের নাম ও সংস্করণকে ফিরিয়ে দেয় (উদাহরণ: 'HTTP/1.0')
$_SERVER['REQUEST_METHOD'] পৃষ্ঠা পরিদর্শন করার জন্য ব্যবহৃত প্রয়োগানোর পদ্ধতিকে ফিরিয়ে দেয় (উদাহরণ: POST)
$_SERVER['REQUEST_TIME'] প্রয়োগানোর শুরুতের সময়ক্রমকে ফিরিয়ে দেয় (উদাহরণ: 1577687494)
$_SERVER['QUERY_STRING'] কোনো প্রশ্ন পটটি দ্বারা পৃষ্ঠা পরিদর্শন করা হলে, তার জন্য কোনো প্রশ্ন পটকে ফিরিয়ে দেয়。
$_SERVER['HTTP_ACCEPT'] বর্তমান প্রয়োগানোর সমস্ত হেডকে ফিরিয়ে দেয়。
$_SERVER['HTTP_ACCEPT_CHARSET'] বর্তমান প্রয়োগানোর Accept_Charset হেডকে ফিরিয়ে দেয় (উদাহরণ: utf-8, ISO-8859-1)
$_SERVER['HTTP_HOST'] বর্তমান প্রয়োগানোর Host হেডকে ফিরিয়ে দেয়。
$_SERVER['HTTP_REFERER'] বর্তমান পৃষ্ঠার সম্পূর্ণ URL-কে ফিরিয়ে দেয় (নির্ভরযোগ্য নয়, কারণ সমস্ত ব্যবহারকারীর এজেন্ট সমর্থন করে না)。
$_SERVER['HTTPS'] সুরক্ষিত HTTP প্রোটোকলের মাধ্যমে স্ক্রিপ্ট কি করা হয়েছে।
$_SERVER['REMOTE_ADDR'] বর্তমানে পৃষ্ঠা দেখা হওয়ার ব্যবহারকারীর IP এড্রেসটি ফিরিয়ে দেয়।
$_SERVER['REMOTE_HOST'] বর্তমানে পৃষ্ঠা দেখা হওয়ার ব্যবহারকারীর হোস্ট নামটি ফিরিয়ে দেয়।
$_SERVER['REMOTE_PORT'] ব্যবহারকারীর মাশিনের ওয়েব সার্ভারের সাথে সংযুক্ত হওয়ার জন্য ব্যবহৃত পোর্ট নম্বরটি ফিরিয়ে দেয়।
$_SERVER['SCRIPT_FILENAME'] বর্তমানে এক্সিকিউটিং স্ক্রিপ্টের অবস্থান ফাইল পথটি ফিরিয়ে দেয়।
$_SERVER['SERVER_ADMIN'] এই মানটি Apache সার্ভার কনফিগারেশন ফাইলের SERVER_ADMIN পারামিটারটি উল্লিখিত করে।
$_SERVER['SERVER_PORT'] ওয়েব সার্ভারের ব্যবহৃত পোর্টটি।ডিফল্ট মান '80'।
$_SERVER['SERVER_SIGNATURE'] সার্ভারের সংস্করণ এবং ভার্চ্যুয়াল হোস্ট নামটি ফিরিয়ে দেয়।
$_SERVER['PATH_TRANSLATED'] বর্তমান স্ক্রিপ্টটি অবস্থিত ফাইল সিস্টেমের (নথিপত্র রূপরেখা ডিরেক্টরিতে নয়) প্রথম পথ।
$_SERVER['SCRIPT_NAME'] বর্তমান স্ক্রিপ্টের পাথটি ফিরিয়ে দেয়।
$_SERVER['SCRIPT_URI'] বর্তমান পৃষ্ঠার URI-টি ফিরিয়ে দেয়।

PHP $_REQUEST

PHP $_REQUEST এবং HTML ফর্ম সমর্থন method="post" পরে ফর্ম ডাটা সংগ্রহ করে।

এই উদাহরণটি একটি ফর্ম প্রদর্শন করে যা একটি ইনপুট ফিল্ড এবং সমর্থন বাটন ধারণ করে।যখন ব্যবহারকারী সমর্থন বাটন ক্লিক করে তখন ফর্ম ডাটা পাঠানো হবে <form> ট্যাগের action অ্যাট্রিবিউটে উল্লিখিত স্ক্রিপ্ট ফাইলে।এই উদাহরণে, আমরা ফর্ম ডাটা প্রক্রিয়াকরণের জন্য ফাইলটিকেই নির্দিষ্ট করেছি।আপনি অন্য একটি PHP ফাইলকে ফর্ম ডাটা প্রক্রিয়াকরণের জন্য ব্যবহার করতে চান তবে, আপনার পছন্দ ফাইল নামটি পরিবর্তন করুন।তারপর, আমরা ইনপুট ফিল্ডের মান সংগ্রহ করতে সুপার গ্লোবাল ভেচার $_REQUEST ব্যবহার করতে পারি:

ইনস্ট্রাকশন

<html>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
নাম: <input type="text" name="fname">
<input type="submit">
</form>
<?php 
$name = $_REQUEST['fname']; 
echo $name; 
?>
</body>
</html>

ইনস্ট্রাকশন চালু করুন

PHP $_POST

PHP $_POST বিস্তৃতভাবে ব্যবহৃত হয় যাতে HTML ফর্ম সমর্থন method="post" পরে ফর্ম ডাটা সংগ্রহ করা হোক।$_POST-এর সাথে সাধারণত ভেচারও পাঠানো হয়。

এই উদাহরণটি একটি ফর্ম প্রদর্শন করে যা একটি ইনপুট ফিল্ড এবং সমর্থন বাটন ধারণ করে।যখন ব্যবহারকারী সমর্থন বাটন ক্লিক করে তখন ফর্ম ডাটা পাঠানো হবে <form> ট্যাগের action অ্যাট্রিবিউটে উল্লিখিত ফাইলে।এই উদাহরণে, আমরা ফর্ম ডাটা প্রক্রিয়াকরণের জন্য ফাইলটিকেই নির্দিষ্ট করেছি।আপনি অন্য একটি PHP পেজকে ফর্ম ডাটা প্রক্রিয়াকরণের জন্য ব্যবহার করতে চান তবে, আপনার পছন্দ ফাইল নামটি পরিবর্তন করুন।তারপর, আমরা ইনপুট ফিল্ডের মান সংগ্রহ করতে সুপার গ্লোবাল ভেচার ভেচার $_POST ব্যবহার করতে পারি:

ইনস্ট্রাকশন

<html>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
নাম: <input type="text" name="fname">
<input type="submit">
</form>
<?php 
$name = $_POST['fname'];
echo $name; 
?>
</body>
</html>

ইনস্ট্রাকশন চালু করুন

PHP $_GET

PHP $_GET-এও HTML ফর্ম (method="get") পরের ফর্ম ডাটা সংগ্রহ করা যেতে পারে。

$_GET-এও URL-এর পাঠানো ডাটা সংগ্রহ করা যেতে পারে。

আমরা একটি পাতা হাজির করতে পারি যার মধ্যে পারামিটারসহ হাইপারলিঙ্ক আছে:

<html>
<body>
<a href="test_get.php?subject=PHP&web=codew3c.com">পরীক্ষা $GET</a>
</body>
</html>

যখন ব্যবহারকারী "পরীক্ষা $GET" লিঙ্কে ক্লিক করে, "subject" এবং "web" পারামিটার "test_get.php"-এ পাঠানো হয়, এরপর আপনি $_GET-এর মাধ্যমে এই মানগুলোকে "test_get.php"-এ অ্যাক্সেস করতে পারবেন。

নিচের উদাহরণ "test_get.php"-এর কোড

ইনস্ট্রাকশন

<html>
<body>
<?php 
echo "এখানে " . $_GET['web'] . " নিয়ে " . $_GET['subject'];
?>
</body>
</html>

ইনস্ট্রাকশন চালু করুন

টীকা:আপনি এখানে PHP ফর্ম এই সেকশনে আপনি $_POST এবং $_GET সম্পর্কে আরও বেশি জানতে পারবেন。