PHP Global Variables – Superglobals
یک تعداد از متغیرهای تعریف شده در php وجود دارد که می توان با استفاده از آنها کارهایی را روی متغیرها انجام داد. به این متدهای آماده superglobals می گوییم.
متغیرهای سوپرگلوبال از قرار زیر هستند :
- $GLOBALS
- $_SERVER
- $_REQUEST
- $_POST
- $_GET
- $_FILES
- $_ENV
- $_COOKIE
- $_SESSION
که در ادامه به ترتیب آنها را بررسی خواهیم کرد.
$GLOBALS
متغیر سراسری همانطور که از اسمش مشخص است محدود به یک تابع نیست و خارج از تابع نیز کارایی دارد. متغیر می تواند داخل تابع نوشته شود و در همان تابع کاربرد داشته باشد و یا سراسری باشد یعنی خارج از تابع نیز اثر گذار باشد. در مثال زیر کاربرد $GLOBALS را میبینیم:
<?php
$x = 75;
$y = 25;
function addition() {
$x = 5;
$y = 2;
$GLOBALS[‘z’] = $GLOBALS[‘x’] + $GLOBALS[‘y’];
}
addition();
echo $z;
?>
در مثال بالا نتیجه 100 است چون متغیر $GLOBALS سراسری است، متغیر های داخل تابع را در نظر نمیگیرد. پس زمانی که متغیر مد نظر ما متغیر سراسری باشد و نخواهیم متغیرهای محلی تاثیر گذار در نتیجه باشد از این متغیر آماده استفاده میکنیم.
$_SERVER
با این متد می توانیم به یک صفحه از صفحات php دسترسی داشته باشیم. این متد شامل زیر مجموعه های زیادی است که برای دسترسی به اطلاعات مختلف مورد استفاده قرار میگیرد. در ادامه جزئیات این متد را بررسی می کنیم:
- $_SERVER[‘PHP SELF’]
نام فایل اسکریپت در حال اجرا را برمیگرداند.
- $_SERVER[‘GATEWAY_INTERFACE’]
نسخه معمول گذرگاه رابط (CGI) سرور استفاده شده را برمیگرداند.
- $_SERVER[‘SERVER_ADDR’]
آدرس IP سرور میزبان را برمیگرداند.
- $_SERVER[‘SERVER_NAME’]
نام سرور میزبان (مانند www.w3schools.com) را برمی گرداند.
- $_SERVER[‘SERVER_SOFTWARE’]
رشته شناسایی سرور را برمی گرداند (مانند Apache/2.2.24)
- $_SERVER[‘SERVER_PROTOCOL’]
نام و نسخه پروتکل اطلاعاتی (مانند HTTP/1.1) را برمی گرداند.
- $_SERVER[‘REQUEST_METHOD’]
روش درخواست استفاده شده برای دسترسی به صفحه (مانند POST) را برمی گرداند.
- $_SERVER[‘REQUEST_TIME’]
زمان شروع درخواست را با توجه به زمان مبدا (1/1/1970) طبق ثانیه برمیگرداند.
- $_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’]
مقدار داده شده به دستور SERVER_ADMIN را در فایل پیکربندی وب سرور برمیگرداند (اگر اسکریپت شما روی یک میزبان مجازی اجرا شود، مقدار تعریف شده برای آن میزبان مجازی خواهد بود) (مانند someone@w3schools.com)
- $_SERVER[‘SERVER_PORT’]
پورت دستگاه سرور را که توسط وب سرور برای ارتباط استفاده می شود (مانند 80) برمی گرداند.
- $_SERVER[‘SERVER_SIGNATURE’]
نسخه سرور و نام میزبان مجازی را که به صفحات ایجاد شده توسط سرور اضافه شده اند، برمی گرداند.
- $_SERVER[‘PATH_TRANSLATED’]
مسیر مبتنی بر سیستم فایل را به اسکریپت فعلی برمیگرداند.
- $_SERVER[‘SCRIPT_NAME’]
مسیر اسکریپت فعلی را برمی گرداند
- $_SERVER[‘SCRIPT_URI’]
URI صفحه فعلی را برمی گرداند.
PHP $_REQUEST
متغیر سوپرگلوبال $_REQUEST برای جمع آوری داده ها پس از ارسال فرم استفاده میشود. در واقع هر اطلاعاتی که در صفحه وب جابهجا میشه میره سمت سرور و خونده میشه به این حالت request می گویند. Request میتواند به دو صورت انجام شود.
متد post یا متد get .
<html>
<body>
<form method=”post” action=”<?php echo $_SERVER[‘PHP_SELF’];?>”>
Name: <input type=”text” name=”fname”>
<input type=”submit”>
</form>
<?php
if ($_SERVER[“REQUEST_METHOD”] == “POST”) {
// collect value of input field
$name = $_REQUEST[‘fname’];
if (empty($name)) {
echo “Name is empty”;
} else {
echo $name;
}
}
?>
</body>
</html>