متغير هاي سوپر گلوبال درphp4.1.0 داخلي بوده ودر تمام نواحيه اسكريپت php قابل دسترسي است .اين متغيرها بدون هيچ كار خاصي در تمام توابع، كلاسها وفايلها قابل دسترسي هستند.
متغير هايSuperglobal php عبارتند از
$GLOBALS -1
$_SERVER -2
$_REQUEST-3
$_POST -4
$_GET -5
$_FILES -6
$_ENV -7
$_COOKIE -8
$_SESSION -9
تعدادي از همين متغيرهاي ابر جهاني را در همين بخش تشريح ومابقي در فصول مرتبط با خودشان مطرح ميگردند.
متغيرهاي ابرجهاني متغيرهاي داخلي هستند، كه در تمام نواحي در دسترس ميباشند.
متغير ابر جهاني$GLOBALS يك آرايه ايست كه تمام متغيرهاي جهاني اسكريپت را همراه مقدار نگه ميدارد .اين متغير يك آرايه انجمني است ومحتوي آن زوج نام متغير ومقدار ميباشد.نام متغير بدون كراكتر$ ميباشد.
مثال ـ در مثال زير نشان ميدهد چگونه از متغير$GLOBALS استفاده ميشود.
<?php $x=75; $y=25; function addition(){ $GLOBALS["z"]=$GLOBALS["x"]+$GLOBALS["y"]; } addition(); echo $z; ?>
در مثال بالا دو متغير$y , $x در خارج تابع ايجادشدند ولي متغير $zدرداخل تابع توسط $GLOBALS['z'] براي خارج از تابع ايجاد ميشود .ونتيجه درآن قرار ميگيرد. اين بدين معني است كه، نميتوان ازمتغير$z بطور مستقيم استفاده نمود.
اين متغير ابر جهاني اطلاعاتي از سرصفحه ها، مسيرهاومكانهاي اسكريپتphp ذخيره دارد .
مثال ـ در مثال زير نحوي استفاده از$_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[] ميتواند استفاده گردد،آمده است
Element/Code | Description |
---|---|
$_SERVER['PHP_SELF'] | Returns the filename of the currently executing script |
$_SERVER['GATEWAY_INTERFACE'] | Returns the version of the Common Gateway Interface (CGI) the server is using |
$_SERVER['SERVER_ADDR'] | Returns the IP address of the host server |
$_SERVER['SERVER_NAME'] | Returns the name of the host server (such as www.w3schools.com) |
$_SERVER['SERVER_SOFTWARE'] | Returns the server identification string (such as Apache/2.2.24) |
$_SERVER['SERVER_PROTOCOL'] | Returns the name and revision of the information protocol (such as HTTP/1.1) |
$_SERVER['REQUEST_METHOD'] | Returns the request method used to access the page (such as POST) |
$_SERVER['REQUEST_TIME'] | Returns the timestamp of the start of the request (such as 1377687496) |
$_SERVER['QUERY_STRING'] | Returns the query string if the page is accessed via a query string |
$_SERVER['HTTP_ACCEPT'] | Returns the Accept header from the current request |
$_SERVER['HTTP_ACCEPT_CHARSET'] | Returns the Accept_Charset header from the current request (such as utf-8,ISO-8859-1) |
$_SERVER['HTTP_HOST'] | Returns the Host header from the current request |
$_SERVER['HTTP_REFERER'] | Returns the complete URL of the current page (not reliable because not all user-agents support it) |
$_SERVER['HTTPS'] | Is the script queried through a secure HTTP protocol |
$_SERVER['REMOTE_ADDR'] | Returns the IP address from where the user is viewing the current page |
$_SERVER['REMOTE_HOST'] | Returns the Host name from where the user is viewing the current page |
$_SERVER['REMOTE_PORT'] | Returns the port being used on the user's machine to communicate with the web server |
$_SERVER['SCRIPT_FILENAME'] | Returns the absolute pathname of the currently executing script |
$_SERVER['SERVER_ADMIN'] | Returns the value given to the SERVER_ADMIN directive in the web server configuration file (if your script runs on a virtual host, it will be the value defined for that virtual host) (such as someone@w3schools.com) |
$_SERVER['SERVER_PORT'] | Returns the port on the server machine being used by the web server for communication (such as 80) |
$_SERVER['SERVER_SIGNATURE'] | Returns the server version and virtual host name which are added to server-generated pages |
$_SERVER['PATH_TRANSLATED'] | Returns the file system based path to the current script |
$_SERVER['SCRIPT_NAME'] | Returns the path of the current script |
$_SERVER['SCRIPT_URI'] | Returns the URI of the current page |
اين متغير ابر جهاني$_REQUEST[] براي جمع نمودن اطلاعات فرم پس از عمل submitاستفاده ميشود.
در مثال زير فرمي را با يك فيلد وردي(input field) و يكbutton از نوع submit نشان ميدهد . هنگاميكه كاربر كليدSubmit راclick مي نمايد، اطلاعات را، به فايلphp در مشخصهaction فرم ارسال مينمايد .دراين فرم اطلاعات به اسكريپتphp خودش ارسال ميگردد .اين مطلب از action فرم كه بصورت زير است مشخص ميشود.
بدين ترتيب عمليات پردازشي اطلاعات فرم در اسكريپتphp خودش انجام ميشود .دراين مثال اسكريپت بعداز</form> اين كار را انجام ميدهد . در اسكريپت، براي دسترسي باطلاعات فرم از$_REQUESTاستفاده ميشود.
بعنوان نمونه عبارت$_REQUEST["fname"] يعني محتوي فيلد ورودي فرم بعداز كليكSubmit فرم
مثال ـ استفاده از$_REQUEST[]
نكته ـaction همانست كه ذكر شد .اما بدليل خاصي براي رفع مشكل، متغير كمكيphp_s با قرار دادن عبارتPHP_SELF درآن و استفاده درaction برنامه تنظيم گرديداست .اين دو هيچ تفاوتي در حالت عادي ندارند.
<html> <body> <?php $php_s="PHP_SELF"; ?> <form method="post" action="<?php echo $_SERVER[$php_s];?>"> 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>
متغير$_POST متغير ابر جهاني است ،كه براي جمع آوري اطلاعات از فرمHTML با متدPOST بعد از submit آن استفاده ميشود.
در مثال زير فرمي است، با فليد ورودي ويكbutton از نوع Submt كه با كليك آن اطلاعات فرم به اسكريپت مشخص شده درaction ارسال ميگردد .دراين اسكريپت ، اطلاعات فرم از طريق متغير ابر جهاني$_POST[ ] قابليت دسترسي دارد.
بعنوان نمونه$_POST["fname"] محتوي فليدfname در فرم پس از عملsubmit فرم وارسال اطلاعات.
مثال ـ فرم بامتدPOST
<html> <body> <?php $php_s="PHP_SELF"; ?> <form method="post" action="<?php echo $_SERVER[$php_s];?>"> Name: <input type="text" name="fname"> <input type="submit"> </form> <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { // collect value of input field $name = $_POST["fname"]; if (empty($name)) { echo "Name is empty"; } else { echo $name; } } ?> </body> </html>
در مورد متدPOST در بخش فرم ها اطلاعات كاملتري بيان ميگردد .
متغير ابر جهاني$_GET[ ] براي جمع آوري اطلاعات ارسالي فرم با متدGET استفاده ميشود .پس از عملsubmit فرم اطلاعات ارسالي درمتغير$_GET[ ] قابل دسترسي ميباشد .اطلاعات در اين فرمت بصورتUrl ارسال ميشود.
مثال ـ فرض كنيد داراي يكHTML page با لينكي بهtest_get.php با دو پارامتر وروديsubject وweb داشته باشيم .ميخواهيم درtest_get.php به اطلاعات پارامترهاي ارسالي دسترسي داشته باشيم.برنامه صفحه مطابق زير است.
<html> <body> <a href="test_get.php?subject=PHP&web=W3schools.com">Test $GET</a> </body> </html>
برنامه دريافت كننده اطلاعاتtest_get.php مطابق زير است .
<html> <body> <?php echo "Study " . $_GET['subject'] . " at " . $_GET['web']; ?> </body> </html>