هي متغيرات مدمجة معرّفة مسبقًا في لغة PHP على أنّها متغيرات ذات نطاق عام عالي، وهذا يعني أنّها متاحة دائمًا في جميع نطاقات السكربت دون الحاجة لتعريفها باستخدام الكلمة المفتاحية global
للوصول إليها من داخل الدوال أو التوابع.
شرح المتغيرات ذات النطاق العام العالي
ببساطة هي المتغيرات المتاحة في كل نطاقات ملفات السكربت لديك، وهذا يعني أنّه لا حاجة لتمريرها كمعاملات للدوال أو تخزينها خارج كتلة الشيفرة لتصبح متاحة في مختلف النطاقات.
ما هو المتغير ذو النطاق العام العالي؟
بدءًا من الإصدار 7.1.3 PHP هناك 9 متغيرات ذات نطاق عام عالي وهي:
-
$GLOBALS
: تشير إلى كل المتغيرات المتاحة في النطاق العام -
$_SERVER
: معلومات الخادم وبيئة التنفيذ -
$_GET
: متغيرات طلب HTTP باستخدام GET -
$_POST
: متغيرات طلب HTTP باستخدام POST -
$_FILES
: متغيرات طلب HTTP لتحميل ملف -
$_COOKIE
: ملفات تعريف ارتباط HTTP (HTTP Cookies) -
$_SESSION
: متغيرات الجلسة -
$_REQUEST
: متغيرات طلب HTTP -
:
$_ENV متغيرات البيئة
يمكنك الاطلاع عليها في التوثيق الرسمي
إليك المزيد من المعلومات حول هذه المتغيرات:
$GLOBALS
مصفوفة ترابطية (associative array) تحوي مراجعًا لكل المتغيرات المعرّفة في النطاق العام للسكربت، وتمثّل المفاتيح فيها أسماء المتغيرات وقيمة عناصرها هي محتويات تلك المتغيرات.
// تعريف متغير خارج النطاق $myGlobal = "global"; function test() { // تعريف متغير داخل النطاق $myLocal = "local"; // طباعة كلا المتغيرين var_dump($myLocal); var_dump($GLOBALS["myGlobal"]); } // تنفيذ الدالة test(); لم يعرّف ضمن النطاق العام $myLocal فقط بما أنّ $myGlobal ستُطبَع قيمة المتغير var_dump($myLocal); var_dump($myGlobal);
خرج الشيفرة السابقة:
string 'local' (length=5) string 'global' (length=6) null string 'global' (length=6)
في المثال السابق لم تُعرض قيمة المتغير $myLocal
في المرة الثانية لأنّه معرّف داخل الدالة test()
ودُمِّر بعد إغلاقها.
تعريف متغير عام
هناك طريقتان للتعريف: الطريقة الأولى: استخدام الكلمة المفتاحية global
:
function test() { global $myLocal; $myLocal = "local"; var_dump($myLocal); var_dump($GLOBALS["myGlobal"]); }
تسبق الكلمة المفتاحية global
اسم المتغير ليصبح جزءًا من النطاق العام، ولا يمكن إسناد قيمة للمتغير في نفس التعليمة التي تعرّفه متغيرًا عامًا لذا أُسندَت القيمة له في سطرٍ منفصلٍ من الشيفرة السابقة، يمكن ذلك فقط في حال كتبت الشيفرة في سطرٍ واحد بالشكل التالي:
global $myLocal; $myLocal = "local";
لكن سيؤثر ذلك بالتأكيد على أناقة الشيفرة.
الطريقة الثانية: مصفوفة $GLOBALS
:
function test() { $GLOBALS["myLocal"] = "local"; $myLocal = $GLOBALS["myLocal"]; var_dump($myLocal); var_dump($GLOBALS["myGlobal"]); }
في هذا المثال أعدت إسناد القيمة ["$GLOBAL["myLocal للمتغير $myLocal
إذ وجدت أن كتابة اسم المتغير أسهل من كتابة المصفوفة الترابطية.
$_SERVER
$_SERVER
هي مصفوفة تتضمن معلومات مثل الترويسات والمسارات وأماكن وجود السكربت. ينشئ خادم الويب مداخل هذه المصفوفة لكن ليس هناك ما يضمن أن خادم الويب سيزودنا بهذه المعلومات فقد يحذف خادم الويب بعضها أو قد يزودنا بمعلومات إضافية، يمكنك الاطلاع على جميع المتغيرات المتوقعة هنا.
إليك مثال خرج يمكن أن يكون كالتالي (يمكنك تشغيله عبر جهاز بنظام تشغيل ويندوز على الخادم WAMP):
C:\wamp64\www\test.php:2: array (size=36) 'HTTP_HOST' => string 'localhost' (length=9) 'HTTP_CONNECTION' => string 'keep-alive' (length=10) 'HTTP_CACHE_CONTROL' => string 'max-age=0' (length=9) 'HTTP_UPGRADE_INSECURE_REQUESTS' => string '1' (length=1) 'HTTP_USER_AGENT' => string 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36' (length=110) 'HTTP_ACCEPT' => string 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' (length=74) 'HTTP_ACCEPT_ENCODING' => string 'gzip, deflate, sdch, br' (length=23) 'HTTP_ACCEPT_LANGUAGE' => string 'en-US,en;q=0.8,en-GB;q=0.6' (length=26) 'HTTP_COOKIE' => string 'PHPSESSID=0gslnvgsci371ete9hg7k9ivc6' (length=36) 'PATH' => string 'C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\ProgramData\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem ;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;E:\Program Files\ATI Technologies\ATI.ACE\Core- Static;E:\Program Files\AMD\ATI.ACE\Core-Static;C:\Program Files (x86)\AMD\ATI.ACE\Core- Static;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files\Intel\Intel(R) Managemen'... (length=1169) 'SystemRoot' => string 'C:\WINDOWS' (length=10) 'COMSPEC' => string 'C:\WINDOWS\system32\cmd.exe' (length=27) 'PATHEXT' => string '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY' (length=57) 'WINDIR' => string 'C:\WINDOWS' (length=10) 'SERVER_SIGNATURE' => string '<address>Apache/2.4.23 (Win64) PHP/7.0.10 Server at localhost Port 80</address>' (length=80) 'SERVER_SOFTWARE' => string 'Apache/2.4.23 (Win64) PHP/7.0.10' (length=32) 'SERVER_NAME' => string 'localhost' (length=9) 'SERVER_ADDR' => string '::1' (length=3) 'SERVER_PORT' => string '80' (length=2) 'REMOTE_ADDR' => string '::1' (length=3) 'DOCUMENT_ROOT' => string 'C:/wamp64/www' (length=13) 'REQUEST_SCHEME' => string 'http' (length=4) 'CONTEXT_PREFIX' => string '' (length=0) 'CONTEXT_DOCUMENT_ROOT' => string 'C:/wamp64/www' (length=13) 'SERVER_ADMIN' => string 'wampserver@wampserver.invalid' (length=29) 'SCRIPT_FILENAME' => string 'C:/wamp64/www/test.php' (length=26) 'REMOTE_PORT' => string '5359' (length=4) 'GATEWAY_INTERFACE' => string 'CGI/1.1' (length=7) 'SERVER_PROTOCOL' => string 'HTTP/1.1' (length=8) 'REQUEST_METHOD' => string 'GET' (length=3) 'QUERY_STRING' => string '' (length=0) 'REQUEST_URI' => string '/test.php' (length=13) 'SCRIPT_NAME' => string '/test.php' (length=13) 'PHP_SELF' => string '/test.php' (length=13) 'REQUEST_TIME_FLOAT' => float 1491068771.413 'REQUEST_TIME' => int 1491068771
هناك الكثير من الأشياء التي يمكن أن نتحدث عنها لكن سنختار الأهم من بينها، يمكنك الاطلاع عليها كلها من خلال قسم الفهارس من التوثيق.
لنوضح بعضها نفرض أنّ لدينا الرابط التالي http://www.example.com/index.php
-
HTTP_HOST: عنوان المضيف، يرجع
www.example.com
. - HTTP_USER_AGENT: محتويات وكيل المستخدم (user agent)، عبارة عن سلسلة نصية تحوي كل معلومات متصفح العميل (client's browser) بما في ذلك نظام التشغيل.
- HTTP_COOKIE: جميع ملفات تعريف الارتباط (cookies) في سلسلة متسلسلة يفصل بين عناصرها فاصلة منقوطة.
-
SERVER_ADDR: عنوان IP الخادم الذي ينفذ السكربت، يرجع القيمة
93.184.216.34
. -
PHP_SELF: اسم ملف السكربت المنفّذ حاليًا نسبةً إلى المستند الجذر، يرجع في حالتنا القيمة
/index.php
. - REQUEST_TIME_FLOAT: الختم الزمني (timestamp) لبداية الطلب بدقة أجزاء الثانية، متاح من الإصدار PHP 5.4.0.
- REQUEST_TIME: الختم الزمني لبداية الطلب، متاح من الإصدار PHP 5.1.0.
:$_GET
مصفوفة ترابطية من المتغيرات الممررة عبر معاملات الرابط إلى السكربت الحالي، أي ما يأتي بعد ? في الرابط.
بفرض لدينا الرابط http://www.example.com/index.php?myVar=myVal
، يمكننا الحصول من الرابط على قيمة $_GET["myVar"]
وستكون النتيجة هي myVal
، يمكننا التعبير عن ذلك بالشيفرة التالية:
// URL = http://www.example.com/index.php?myVar=myVal echo $_GET["myVar"] == "myVal" ? "true" : "false"; // true
يستخدم المثال السابق العامل الثلاثي (ternary operator)، ويبيّن كيفية الوصول للقيمة من الرابط باستخدام المتغير ذو النطاق العام العالي $_GET
.
إليك مثال آخر:
// URL = http://www.example.com/index.php?myVar=myVal&myVar2=myVal2 echo $_GET["myVar"]; // "myVal" echo $_GET["myVar2"]; // "myVal2"
يمكن إرسال عدة متغيرات عبر الرابط ويُفصل بينها بالمحرف (&)
.
الخطر الأمني
من المهم جدًا عدم إرسال معلومات حساسة عبر الرابط لأنها تبقى في سجل الحاسوب وستكون مرئية لأي شخص يمكنه الوصول للمتصفح.
$_POST
مصفوفة ترابطية من المتغيرات الممررة للسكربت الحالي بطريقة HTTP POST عند استخدام نوع المحتوى (Content-Type) لطلب HTTP application/x-www-form-urlencoded
أو multipart/form-data
، وتشبه مصفوفة $_GET
أنّ البيانات ممررة من مكان لآخر.
سنبدأ فورًا بمثال (تجاهلت الخاصيّة attribute
حتى تُرسل المعلومات إلى نفس صفحة النموذج).
<form method="POST"> <input type="text" name="myVar" value="myVal" /> <input type="submit" name="submit" value="Submit" /> </form>
في الأعلى شكل أساسي لنموذج إرسال البيانات، إنّ عدم وجود الخاصيّة value
في التطبيق الحقيقي يعني أنّ النموذج سيكون فارغًا، أما وجودها سيرسل المعلومات المُدخلة من قِبل المستخدم.
echo $_POST["myVar"]); // "myVal"
الخطر الأمني
إنّ إسال البيانات باستخدام POST ليس آمنًا دائمًا، يجب استخدام HTTPS لضمان أمن المعلومات بشكلٍ أكبر.
$_FILES
مصفوفة ترابطية من العناصر المحمّلة إلى السكربت الحالي بطريقة HTTP POST، بنية هذه المصفوفة مبينة هنا.
لنبدأ مع نموذج أساسي:
<form method="POST" enctype="multipart/form-data"> <input type="file" name="myVar" /> <input type="submit" name="Submit" /> </form>
لاحظ أنّني تجاهلت خاصيّة action
أيضًا (لنفس السبب السابق)، وأضفت enctype="multipart/form-data"
وهذا ضروري لأيّ نموذج يتعامل مع تحميل الملفات.
// التأكد من عدم وجود خطأ if ($_FILES["myVar"]["error"] == UPLOAD_ERR_OK) { $folderLocation = "myFiles"; // مثلًا "path/to/file" مسار منسوب يمكن أن يكون // إذا لم يوجد المجلد المطلوب أنشئه if (!file_exists($folderLocation)) mkdir($folderLocation); // انقل الملف داخل المجلد move_uploaded_file($_FILES["myVar"]["tmp_name"], "$folderLocation/" . basename($_FILES["myVar"]["name"])); }
يُستخدم هذا لتحميل ملف واحد، يوجد الخاصيّة multiple
تساعدك في تحميل أكثر من ملف.
إليك مثال لإرسال نموذج بعدة ملفات:
<form method="POST" enctype="multipart/form-data"> <input type="file" name="myVar[]" multiple="multiple" /> <input type="submit" name="Submit" /> </form>
لاحظ أنّ التغييرات قليلة جدًا:
-
خاصيّة
name
للحقلinput
لها أقواس معقوفة[]
. ذلك لأنّه نريد إخبار النموذج أنّه لدينا مصفوفة ملفات مُختارة لإرسالها وتجاهل هذه الأقواس سيؤدي لإرسال الملف الأخير فقط إلى$_FILES["myVar"]
. -
الخاصيّة
multiple="multiple"
، تُخبر المتصفح أنّه يمكن للمستخدم اختيار أكثر من ملف.
// حساب عدد الملفات المُرسلة $total = isset($_FILES["myVar"]) ? count($_FILES["myVar"]["name"]) : 0; // تكرار لكل ملف من الملفات for ($i = 0; $i < $total; $i++) { // إذا لم يوجد خطأ if ($_FILES["myVar"]["error"][$i] == UPLOAD_ERR_OK) { // مثلًا "path/to/file" مسار منسوب يمكن أن يكون $folderLocation = "myFiles"; // إذا لم يوجد المجلد أنشئه if (!file_exists($folderLocation)) mkdir($folderLocation); // انقل الملف إلى المجلد move_uploaded_file($_FILES["myVar"]["tmp_name"][$i], "$folderLocation/" . basename($_FILES["myVar"]["name"][$i])); } // وإلّا أخبر عن الخطأ else switch ($_FILES["myVar"]["error"][$i]) { case UPLOAD_ERR_INI_SIZE: echo "Value: 1; The uploaded file exceeds the upload_max_filesize directive in php.ini."; break; case UPLOAD_ERR_FORM_SIZE: echo "Value: 2; The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form."; break; case UPLOAD_ERR_PARTIAL: echo "Value: 3; The uploaded file was only partially uploaded."; break; case UPLOAD_ERR_NO_FILE: echo "Value: 4; No file was uploaded."; break; case UPLOAD_ERR_NO_TMP_DIR: echo "Value: 6; Missing a temporary folder. Introduced in PHP 5.0.3."; break; case UPLOAD_ERR_CANT_WRITE: echo "Value: 7; Failed to write file to disk. Introduced in PHP 5.1.0."; break; case UPLOAD_ERR_EXTENSION: echo "Value: 8; A PHP extension stopped the file upload. PHP does not provide a way to ascertain which extension caused the file upload to stop; examining the list of loaded extensions with phpinfo() may help. Introduced in PHP 5.2.0."; break; default: echo "An unknown error has occurred."; break; } }
هذا مثال بسيط جدًا ولا يعالج مشاكل مثل امتدادات الملفات الغير مسموح بها أو الملفات المسمّاة بأسماء شيفرة PHP (مثل ما يعادل حقن SQL في PHP).
الخطوة الأولى هي التأكد من وجود ملفات وإذا وجدت أسند عددهم للمتغير $total
. ثم نستخدم الحلقة for للمرور على عناصر المصفوفة $_FILES
الواحد تلو الآخر، عند كل ملف إذا لم يواجه مشاكل عندها تكون نتيجة الشرط if هي true ويُحمّل الملف، أما إذا وجدت مشكلة ما تُنفّذ الكتلة switch ويتم إخبارنا بالخطأ الحاصل الذي أوقف عملية تحميل هذا الملف.
$_COOKIE
مصفوفة ترابطية من المتغيرات الممررة للسكربت الحالي باستخدام ملفات تعريف ارتباط HTTP (HTTP Cookies).
ملفات تعريف الارتباط هي متغيرات تحوي بيانات وتخزّن في حاسوب العميل، وعلى عكس المتغيرات ذات النطاق العام العالي فإنّه يجب إنشاؤها مع وظيفة (وليس إسناد قيمة لها)، إليك المثال التالي:
setcookie("myVar", "myVal", time() + 3600);
في المثال السابق حُدِّد اسم ملف تعريف الارتباط ("myVar")، وإعطاء قيمة له ("myVal")، ويمكن تمرير متغير لإسناد قيمته لملف تعريف الارتباط، ثم وقت انتهاء الصلاحية (في مثالنا هو ساعة بما أنّ 3600 ثانية تعادل ساعة).
يمكن الوصول إلى ملف تعريف الارتباط بنفس الطرق السابقة بالرغم من أنّ طريقة إنشائه مختلفة.
echo $_COOKIE["myVar"]; // "myVal"
لتدمير ملف تعريف الارتباط يجب إعادة استدعاء الدالة setcookie
لكن تُعطى قيمة وقت انتهاء الصلاحية أي وقت ماضٍ. كما في المثال:
setcookie("myVar", "", time() - 1); var_dump($_COOKIE["myVar"]); // null
سيلغي هذا تعيين ملف الارتباط ويزيله من حاسوب العميل.
$_SESSION
مصفوفة ترابطية تحوي متغيرات الجلسة المتاحة للسكربت الحالي، يمكنك الاطلاع على توثيق دوال الجلسات لمزيدٍ من المعلومات.
تشبه الجلسات ملفات تعريف الارتباط إلى حد كبير باستثناء أنّها من جانب الخادم.
يجب استدعاء الدالة session_start()
في بداية السكربت للسماح باستخدام الجلسات، وتعيين متغير الجلسة مثل تعيين أي متغير آخر، لاحظ المثال التالي:
$_SESSION["myVar"] = "myVal";
يُعيَّن في بداية الجلسة معرّف عشوائي (random ID) في ملف تعريف ارتباط يسمّى "PHPSESSID" سيحتوي معرّف الجلسة الحالية، ويمكن الوصول له باستدعاء الدالة session_id()
.
يمكن تدمير متغيرات الجلسة باستدعاء الدالة unset
، مثل (unset($_SESSION["myVar"]) سيدمر هذا المتغير.
الحل البديل هو استدعاء الدالة session_destory()
، سيدمر هذا كامل الجلسة أي لن يبقى لدينا أيّ من متغيراتها.
$_REQUEST
مصفوفة ترابطية تحوي افتراضيًا محتويات المصفوفات $GET و$POST و$_COOKIE.
بما أنّه من الممكن أن تحوي هذه المصفوفات الثلاثة على فهرس بنفس الاسم فإنّه يوجد إعداد في ملف php.ini
يسمى request_order
يحدد الأولوية لهذه المصفوفات، مثلًا إذا ضُبط للقيمة "GPC"
عندها ستُستخدم قيمة $_COOKIE
، فقراءتها من اليسار لليمين تعني أنّ $_REQUEST
ستضبط قيمتها ل$_GET
ثم $_POST
ثم $_COOKIE
وبما أنّ $_COOKIE
هي الأخيرة فهي القيمة الموجودة في $_REQUEST
.
$_ENV
مصفوفة ترابطية من المتغيرات الممررة إلى السكربت الحالي عن طريق البيئة.
تُستورد هذه المتغيرات إلى مجال الأسماء العام في PHP من البيئة التي يُنفَّذ فيها محلل PHP. وتزوَّد العديد منها من الصدفة التي تُنفَّذ فيها PHP إذ أنّ الأنظمة المختلفة تشغّل أنواع مختلفة من الصدف ومن الصعب حصرها في قائمة محددة، يمكنك الاطلاع على توثيق صدفتك لتشاهد قائمة من متغيرات البيئة المعرّفة.
تتضمن متغيرات البيئة الأخرى متغيرات CGI، بغض النظر إن كانت PHP تُنفّذ كوحدة خادم أو معالج CGI.
كل ما يُخزّن ضمن $_ENV
يأتي من البيئة التي تُنفّذ فيها PHP، وتُملأ فقط إذا سُمح بها ضمن الملف php.ini
.
3.2: متغيرات النطاق العام العالي في PHP5
هذه المتغيرات هي:
-
$GLOBALS
-
$_REQUEST
-
$_GET
-
$_POST
-
$_FILES
-
$_SERVER
-
$_ENV
-
$_COOKIE
-
$_SESSION
$GLOBALS
يُستخدم هذا المتغير ذو النطاق العام العالي للوصول إلى المتغيرات العامة.
<?php $a = 10; function foo(){ echo $GLOBALS['a']; } // وهي 10 a سيطبع هذا قيمة المتغير العام ?>
$_REQUEST
يُستخدم هذا المتغير ذو النطاق العام العالي لجمع البيانات المرسلة من نموذج HTML.
<?php if(isset($_REQUEST['user'])){ echo $_REQUEST['user']; } // POST و/أو GET والمُرسل بطريقة `name = user` الذي لديه الخاصية HTML ستُطبع قيمة حقل
$_GET
يُستخدم هذا المتغير ذو النطاق العام العالي لجمع البيانات المرسلة من نموذج HTML بالطريقة GET.
<?php if(isset($_GET['username'])){ echo $_GET['username']; } // (1) ?>
في الموضع (1) ستُطبع قيمة حقل HTML الذي له الخاصية name = username
والمُرسل بطريقة GET.
$_POST
يُستخدم هذا المتغير ذو النطاق العام العالي لجمع البيانات المرسلة من نموذج HTML بالطريقة POST.
<?php if(isset($_POST['username'])){ echo $_POST['username']; } // (1)
في الموضع (1) ستُطبع قيمة حقل HTML الذي له الخاصية name = username
والمُرسل بطريقة POST.
$_FILES
يحمل هذا المتغير ذو النطاق العام العالي معلومات الملفات المحمّلة عبر HTTP بالطريقة POST.
<?php if($_FILES['picture']){ echo "<pre>"; print_r($_FILES['picture']); echo "</pre>"; } ?>
ستطبع الشيفرة السابقة تفاصيل الملف مع اسم الصورة المحمّلة عبر النموذج الذي له الخاصيّات method="post"
وenctype="multipart/form-data"
تتضمن التفاصيل اسم الملف، نوع الملف، موقع الملف المؤقت وشيفرة الخطأ (في حال حصل أي خطأ أثناء تحميل الملف) وحجم الملف بالبايتات، مثال:
Array ( [picture] => Array ( [0] => Array ( [name] => 400.png [type] => image/png [tmp_name] => /tmp/php5Wx0aJ [error] => 0 [size] => 15726 ) ) )
$_SERVER
يحمل هذا المتغير ذو النطاق العام العالي معلومات حول السكربتات وترويسات HTTP ومسارات الخادم.
<?php echo "<pre>"; print_r($_SERVER); echo "</pre>"; /** ستطبع هذه الشيفرة التفاصيل التالية على الخادم المحلي (XAMPP مثل) Array ( [MIBDIRS] => C:/xampp/php/extras/mibs [MYSQL_HOME] => \xampp\mysql\bin [OPENSSL_CONF] => C:/xampp/apache/bin/openssl.cnf [PHP_PEAR_SYSCONF_DIR] => \xampp\php [PHPRC] => \xampp\php [TMP] => \xampp\tmp [HTTP_HOST] => localhost [HTTP_CONNECTION] => keep-alive [HTTP_CACHE_CONTROL] => max-age=0 [HTTP_UPGRADE_INSECURE_REQUESTS] => 1 [HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36 [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*;q=0.8 [HTTP_ACCEPT_ENCODING] => gzip, deflate, sdch [HTTP_ACCEPT_LANGUAGE] => en-US,en;q=0.8 [PATH] => C:\xampp\php;C:\ProgramData\ComposerSetup\bin; [SystemRoot] => C:\Windows [COMSPEC] => C:\Windows\system32\cmd.exe [PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC [WINDIR] => C:\Windows [SERVER_SIGNATURE] => Apache/2.4.16 (Win32) OpenSSL/1.0.1p PHP/5.6.12 Server at localhost Port 80 [SERVER_SOFTWARE] => Apache/2.4.16 (Win32) OpenSSL/1.0.1p PHP/5.6.12 [SERVER_NAME] => localhost [SERVER_ADDR] => ::1 [SERVER_PORT] => 80 [REMOTE_ADDR] => ::1 [DOCUMENT_ROOT] => C:/xampp/htdocs [REQUEST_SCHEME] => http [CONTEXT_PREFIX] => [CONTEXT_DOCUMENT_ROOT] => C:/xampp/htdocs [SERVER_ADMIN] => postmaster@localhost [SCRIPT_FILENAME] => C:/xampp/htdocs/abcd.php [REMOTE_PORT] => 63822 [GATEWAY_INTERFACE] => CGI/1.1 [SERVER_PROTOCOL] => HTTP/1.1 [REQUEST_METHOD] => GET [QUERY_STRING] => [REQUEST_URI] => /abcd.php [SCRIPT_NAME] => /abcd.php [PHP_SELF] => /abcd.php [REQUEST_TIME_FLOAT] => 1469374173.88 [REQUEST_TIME] => 1469374173 ) */ ?>
$_ENV
يحمل هذا المتغير ذو النطاق العام العالي معلومات متغيرات بيئة الصدفة التي تُنفّذ فيها شيفرة PHP.
$_COOKIE
يُستخدم هذا المتغير ذو النطاق العام العالي لاسترجاع قيمة ملف تعريف الارتباط مع مفتاح مُعطى.
<?php $cookie_name = "data"; $cookie_value = "Foo Bar"; setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = يوم واحد if(!isset($_COOKIE[$cookie_name])) { echo "Cookie named '" . $cookie_name . "' is not set!"; } else { echo "Cookie '" . $cookie_name . "' is set!<br>"; echo "Value is: " . $_COOKIE[$cookie_name]; } /** Cookie 'data' is set! Value is: Foo Bar */ ?>
$_SESSION
يُستخدم هذا المتغير ذو النطاق العام العالي لضبط واسترجاع قيمة الجلسة المخزنة على الخادم.
<?php // ابدأ الجلسة session_start(); /** ضبط متغيرات الجلسة التي يمكن الوصول إليها من صفحات مختلفة من الخادم الذي خزنها */ $_SESSION["username"] = "John Doe"; $_SESSION["user_token"] = "d5f1df5b4dfb8b8d5f"; echo "Session is saved successfully"; /** Session is saved successfully */ ?>
ترجمة -وبتصرف- للفصول [Superglobal Variables PHP] من كتاب PHP Notes for Professionals book
اقرأ أيضًا
- المقال التالي: طباعة القيم وعرضها في PHP
- المقال السابق: المتغيرات والثوابت في PHP
أفضل التعليقات
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.