متغیر های جهانی (Global) در پی اچ پی – Superglobals

متغیر های سوپرگلوبال (Superglobal) از نسخه ی 4.1.0 به php اضافه شدند. این متغیر های از پیش تعریف شده در تمامی بخش های کدنویسی در دسترس هستند و شما میتوانید با استفاده از توابع، کلاس ها و حتی فایل هایی که کار خاصی انجام نمی دهند این متغیر ها را فراخوانی کنید و از آن ها در بدنه ی کدنویسی خود استفاده کنید .

این متغیر ها به شرح زیر می باشند :

در این قسمت به توضیح برخی از آن ها می پردازیم و در جلسات آتی مابقی آن ها را توضیح خواهیم داد.

 

GLOBALS$ در php

متغیر GLOBALS$ برای دسترسی به تمام متغیرهای سوپر گلوبال در هرجایی از اسکریپت php مورد استفاده قرار می گیرد.( حتی در بدنه ی توابع و متد ها)

زبان php تمامی متغیر های گلوبال را در متغیری به نام [Globals[$index$ نگهداری می کند . که index$ حاوی نام متغیر می باشد.

در مثال زیر متوجه خواهید شد که چطور از متغیر GLOBALS$ استفاده می شود.

<?php 
$x = 75;
$y = 25; 

function addition() {
    $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}

addition();
echo $z;
?>

 

در بدنه ی تابع addition حاصل جمع دو متغیر x$ و y$ را در z$ قرار داده ایم. همانطور که گفته شد GLOBALS$ متغیر را در هر کجای برنامه باشد فراخوانی میکند .

هم چنین متغیر z$ خارج از تابع نیز قابل دسترسی خواهد بود. در نتیجه خروجی دستورات بالا حاصل جمع x$ و y$ یعنی عدد 100 خواهد بود.

 

SERVER_$ در Php

متغیر SERVER_$ یکی از متغیر های سوپر گلوبال در Php است که اطلاعات عنوان ها، مسیر ها و محل دستورها را در خود نگهداری می کند . در مثال زیر می توانید نحوه استفاده SERVER_$ را در Php مشاهده نمایید.

 

<?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'];
?>

 

خروجی مثال بالا به شکل زیر خواهد بود :

/php/demo_global_server.php
www.w3schools.com
www.w3schools.com
https://www.w3schools.com/php/showphp.asp?filename=demo_global_server
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 
(KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36
/php/demo_global_server.php
        

خروجی متغیر گلوبال SERVER_$

 

در جدول زیر پارامتر هایی را مشاهده خواهید کرد که متعلق به SERVER_$ می باشند.

توضیحات عنصر/کد
بازگردانی نام اسکریپتی که در حال اجرا می باشد $_SERVER[‘PHP_SELF’]
بازگردانی اطلاعاتی در مورد ورژن gateway interface سرور $_SERVER[‘GATEWAY_INTERFACE’]
بازگردانی آدرس IP سرور میزبان $_SERVER[‘SERVER_ADDR’]
بازگردانی نام سرور $_SERVER[‘SERVER_NAME’]
بازگردانی رشته شناسایی سرور $_SERVER[‘SERVER_SOFTWARE’]
بازگردانی نام و نسخه پروتکل اطلاعات $_SERVER[‘SERVER_PROTOCOL’]
بازگردانی روش درخواست استفاده شده برای دسترسی به صفحه (مانند POST) $_SERVER[‘REQUEST_METHOD’]
بازگردانی زمان شروع درخواست $_SERVER[REQUEST_TIME]
بازگردانی رشته پرس و جو اگر صفحه از طریق یک رشته پرس و جو قابل دسترسی می باشد $_SERVER[‘QUERY_STRING’]
بازگردانی هدر قبولی از درخواست جاری $_SERVER[‘HTTP_ACCEPT’]
بازگردانی هدر Accept_Charset از درخواست فعلی $_SERVER[‘HTTP_ACCEPT_CHARSET’]
بازگردانی هدر میزبان از درخواست جاری $_SERVER[‘HTTP_HOST’]
بازگردانی URL کامل از صفحه جاری $_SERVER[‘HTTP_REFERER’]
بازگردانی آیا اسکریپت از طریق یک پروتکل HTTP امن درخواست شده است? $_SERVER[‘HTTPS’]
بازگردانی آدرس IP جایی که کاربر در حال مشاهده صفحه ی جاری است. $_SERVER[‘REMOTE_ADDR’]
بازگردانی نام میزبان از جایی که کاربر در حال مشاهده صفحه ی جاری است. $_SERVER[‘REMOTE_HOST’]
بازگردانی پورت استفاده شده روی دستگاه کاربر برای برقراری ارتباط با سرور وب. $_SERVER[‘REMOTE_PORT’]
بازگردانی مسیر مطلق اسکریپت جاری در حال اجرا. $_SERVER[‘SCRIPT_FILENAME’]
بازگردانی مقدار داده شده به دستور SERVER_ADMIN در فایل پیکربندی وب سرور. $_SERVER[‘SERVER_ADMIN’]
بازگردانی پورت روی دستگاه سرور که توسط سرور وب برای برقراری ارتباط استفاده می شود (مانند 80). $_SERVER[‘SERVER_PORT’]
بازگردانی نسخه سرور و نام میزبان مجازی که به صفحات سرور تولید شده اضافه شده است. $_SERVER[‘SERVER_SIGNATURE’]
بازگردانی فایل سیستم مسیر مبتنی بر اسکریپت فعلی $_SERVER[‘PATH_TRANSLATED’]
بازگردانی مسیر اسکریپت جاری $_SERVER[‘SCRIPT_NAME’]
بازگردانی URI صفحه جاری $_SERVER[‘SCRIPT_URI’]

 

تمرین : برنامه ای بنویسید که با ورود کاربر ایپی سیستم او را نمایش دهد.

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Get IP Address</title>
    </head>
    <body>
        <p>Your IP address follows.</p>
        <div style="background: #ddd;">
            Your IP Address: <span style="color: red;">
            <?php echo $_SERVER['REMOTE_ADDR']; ?>
            </span>
        </div>
    </body>
</html>