سوپر گلوبال ها همان متغیرهایی هستند که در داخل کدهای php تعریف شده اند و از قبل مشخص است که هر کدام چه کاری انجام می دهند و چه مقدار هایی را در اختیار ما قرار می دهند.

خاصیتشان این است که فرقی نمی کند کجای کد از آنها استفاده کنید همه جا قابل دسترسی هستند

متغیرهای معمولی این شکلی نیستند. وقتی یک تابع تعریف می کنیم و داخلش متغیری می سازیم از  بیرون تابع قابل دسترسی نیست.

سوپر گلوبال ها:

GLOBALS_$

SERVER_$

GET_$

POST_$

FILES_$

COOKIE_$

SESSION_$

REQUEST_$

ENV_$

GLOBALS_$

این متغیر تمامی متغیرهایی که ما در کد تعریف می کنیم  در خود جای می دهد.

این مثال را در نظر بگیرید

    $str = "سوپر گلوبال ها";

function test(){

    echo ($GLOBALS["str"]);
   
}
 test();

یک تابع تعریف کردم و بیرون تابع هم متغیری گذاشتم. در حالت معمولی نمی توانم داخل تتابع از متغی بیرونی استفاده کنم. اما با سوپر گلوبال $GLOBAL می شود.

بعد از صدا زدن تابع خروجی نمایش داده شده مقدار متغیر است.

SUPERGLOBALS

موقع استفاده از GLOBALS$ اسم متغیری که داخل کروشه قرار می گیرد نباید علامت $ داشته باشد.

SERVER_$

این متغیر اطلاعاتی درباره کامپیوتری که دارد کدها را اجرا می کند در خود ذخیره می کند مثل آدرس ip و اطلاعت مرورگر.

یکبار روی این تابع var_dump انجام می هم تا ببینیم چه چیزهایی درونش دارد.

سوپرگلوبال

کلی اطلاعات دارد که همه شان هم به درد ما نمی خورند اینها بیشترین کاربرد را دارند

SERVER_ADDR

<?php
echo $_SERVER['SERVER_ADDR'];

آدرس ip سروری که کدها درون آن اجرا می شوند را درون خود نگه می دارد.

سوپرگلوبال ها

REQUEST_METHOD

مشخص می کند که درخواستی که به این صفحه آمده از چه نوعی است مثلا POST است یا GET.

<?php
echo $_SERVER['SERVER_ADDR'];


سوپرگلوبال ها

HTTP_REFERER:

<?php
echo $_SERVER['HTTP_REFERER'];

مشخص می کند که کاربر از چه آدرس url به این صفحه آمده است

سوپر گلوبال ها

HTTP_USER_AGENT

اطلاعات مرورگر کاربر دراین متغیر ذخیره می شود

REMOTE_ADDR

echo $_SERVER['REMOTE_ADDR'];

آدرس ip کاربر در صفحه را نشان می دهد.

GET_$

این سوپر گلوبال موقع کار با فرم ها استفاده می شود. در php برای اینکه از اطلاعات ورودی توسط کابر استفاده شود باید این اطلاعات به یک آدرسی url ارسال شود و در آن آدرس کاری که می خواهیم با آن داده ها انجام بدهیم.

دو روش هم برای ارسال اطلاعت داریم یکی GET دیگری هم POST.

در GET داه ها را پشت url اضافه می شوند و معمولا هم به همین آدرسی که کاربر در آن قرار دارد ارسال می شوند.

این مثال را ببینید.

من فرمی ایجاد می کنم که با اراسال آن هر چیزی ک در فرم نوشته باشم ارسال شود.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <form action="" method="GET">
    <input name="txt" type="text">

    <input type="submit" value="send">

    </form>
</body>
</html>

در نتیجه می بینید متنی که نوشتم با یک علامت ؟ به ادامه url چسبیده است.

سوپرگلوبال ها

حالا این مقدار را می توان به شکل زیر دریافت کرد

echo $_GET['txt'];

این سوپرگلوبال در  کار با فرم ها و صفحه بندی زیاد استفاده می شود.

POST_$

فرق این با get در این است که این متد داده ها را به صفحه دیگری ارسال می کند و در پس زمینه است. چیزی روی مرورگر مشخص نخواهد بود.

FILE_$

این یکی در آپلود فایل استفاده می شود

وقتی فایل یا فایل هایی به صفحه ای ارسال می شوند با این سوپرگلوبال قابل دریافت هستند.

REQUEST_$:

تمامی محتویات GET، POST و COOKIE را در خودش ذخیره می کند.

SESSION_$

از سشن ها معمولا برای لاگین کردن کاربر درسایت استفاده می شود.

با این سوپر گلوبال می شود سشن دلخواه را برای کاربر تنظیم کرد. یا سشن هایی که قرار داده شده را دریافت کرد

<?php

session_start();

$_SESSION['login']= true;

COOKIE_$:

کوکی ها هم شبیه به سشن هستند اطلاعاتی را از سمت سرور می شود روی کوکی مرورگر ذخیره کرد که اگر بعدا کاربر دوباره سایت را باز ;رد بفهمیم کدام کاربر بوده است. فرق کوکی با سشن این است که کوکی را کاربر باید به صورت دستی پاک کند ولی سشن با هربار بسته شدن مرورگر خود به خود از بین می رود.

ENV_$

این اطلاعاتی از سرور را در خودش نگه می دارد. مثل اسم دیتابیس. در مواردی که نمی خواهید این چنین اطلاعاتی را در کدهایتان به صورت ثابت بنویسید تا با عوض شدن سرور نیاز به تغیییر نداشته باشد env_$ به کار می آید.