أساسيات PHP

فهم المتغيرات العمومية الفائقة

13 دقيقة الدرس 16 من 45

فهم المتغيرات العمومية الفائقة

المتغيرات العمومية الفائقة في PHP هي متغيرات مدمجة يمكن الوصول إليها دائمًا، بغض النظر عن النطاق. توفر الوصول إلى معلومات مهمة مثل بيانات النماذج، معلومات الخادم، بيانات الجلسة، والمزيد.

ما هي المتغيرات العمومية الفائقة؟

المتغيرات العمومية الفائقة هي مصفوفات خاصة متاحة في جميع النطاقات في البرنامج النصي. يمكنك الوصول إليها من أي دالة أو فئة أو ملف دون الحاجة لاستخدام الكلمة المفتاحية global.

نقطة مهمة: تبدأ المتغيرات العمومية الفائقة بـ $_ (علامة الدولار والشرطة السفلية) وتُكتب دائمًا بأحرف كبيرة.

المتغيرات العمومية الفائقة الرئيسية

<?php // $_GET - بيانات من معاملات الرابط // $_POST - بيانات من إرسال نماذج POST // $_REQUEST - بيانات من كل من GET و POST // $_SERVER - معلومات الخادم وبيئة التنفيذ // $_SESSION - متغيرات الجلسة // $_COOKIE - متغيرات الكوكيز // $_FILES - معلومات رفع الملفات // $_ENV - متغيرات البيئة // $GLOBALS - مراجع لجميع المتغيرات العمومية ?>

المتغير العمومي الفائق $_SERVER

يحتوي المتغير العمومي الفائق $_SERVER على معلومات حول الخادم وبيئة الطلب.

<?php // متغيرات $_SERVER الشائعة echo $_SERVER['PHP_SELF']; // اسم البرنامج النصي الحالي echo $_SERVER['SERVER_NAME']; // اسم مضيف الخادم echo $_SERVER['HTTP_HOST']; // رأس المضيف echo $_SERVER['REQUEST_METHOD']; // طريقة الطلب (GET، POST) echo $_SERVER['REMOTE_ADDR']; // عنوان IP للزائر echo $_SERVER['HTTP_USER_AGENT']; // معلومات المتصفح echo $_SERVER['REQUEST_URI']; // URI الصفحة ?>

مثال: عرض معلومات الخادم

<?php // display_server_info.php echo '<h2>معلومات الخادم</h2>'; echo '<p><strong>البرنامج النصي:</strong> ' . $_SERVER['PHP_SELF'] . '</p>'; echo '<p><strong>الخادم:</strong> ' . $_SERVER['SERVER_NAME'] . '</p>'; echo '<p><strong>طريقة الطلب:</strong> ' . $_SERVER['REQUEST_METHOD'] . '</p>'; echo '<p><strong>وكيل المستخدم:</strong> ' . $_SERVER['HTTP_USER_AGENT'] . '</p>'; echo '<p><strong>عنوان IP:</strong> ' . $_SERVER['REMOTE_ADDR'] . '</p>'; // التحقق من HTTPS $protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'HTTPS' : 'HTTP'; echo '<p><strong>البروتوكول:</strong> ' . $protocol . '</p>'; ?>

المتغير العمومي الفائق $_GET

يحتوي المتغير العمومي الفائق $_GET على البيانات المرسلة عبر معاملات الرابط (سلسلة الاستعلام).

<?php // الرابط: example.php?name=John&age=25 // الوصول إلى المعاملات الفردية $name = $_GET['name']; // "John" $age = $_GET['age']; // "25" echo "الاسم: $name، العمر: $age"; // التحقق من وجود المعامل if (isset($_GET['name'])) { echo "معامل الاسم موجود"; } // عرض جميع معاملات GET echo '<pre>'; print_r($_GET); echo '</pre>'; ?>

مثال: صفحة بحث بسيطة

<!DOCTYPE html> <html> <head> <title>مثال البحث</title> </head> <body> <h1>البحث عن المنتجات</h1> <!-- نموذج البحث (طريقة GET) --> <form method="get" action="search.php"> <input type="text" name="query" placeholder="بحث..."> <select name="category"> <option value="all">جميع الفئات</option> <option value="electronics">الإلكترونيات</option> <option value="books">الكتب</option> </select> <button type="submit">بحث</button> </form> <?php // التحقق من إرسال البحث if (isset($_GET['query'])) { $query = $_GET['query']; $category = $_GET['category']; echo "<h2>نتائج البحث</h2>"; echo "<p>بحثت عن: <strong>$query</strong></p>"; echo "<p>في الفئة: <strong>$category</strong></p>"; // في التطبيق الحقيقي، استعلام قاعدة البيانات هنا } ?> </body> </html>

المتغير العمومي الفائق $_POST

يحتوي المتغير العمومي الفائق $_POST على البيانات المرسلة عبر طريقة POST (عادةً من النماذج).

<?php // الوصول إلى بيانات POST if ($_SERVER['REQUEST_METHOD'] === 'POST') { $username = $_POST['username']; $password = $_POST['password']; echo "اسم المستخدم: $username"; // التحقق من وجود الحقل if (isset($_POST['remember'])) { echo "خيار تذكرني محدد"; } } ?>

المتغير العمومي الفائق $_REQUEST

يحتوي المتغير العمومي الفائق $_REQUEST على البيانات من كل من GET و POST.

<?php // الوصول إلى البيانات من GET أو POST $name = $_REQUEST['name']; // يعمل هذا لكليهما: // example.php?name=John (GET) // إرسال نموذج مع حقل الاسم (POST) ?>
تحذير أمني: تحقق دائمًا من صحة بيانات المتغيرات العمومية الفائقة وقم بتنظيفها. لا تثق أبدًا في إدخال المستخدم! استخدم htmlspecialchars() و filter_var() ودوال التحقق الأخرى.

المتغير العمومي الفائق $GLOBALS

تحتوي المصفوفة $GLOBALS على جميع المتغيرات العمومية.

<?php $x = 10; $y = 20; function sum() { // الوصول إلى المتغيرات العمومية باستخدام $GLOBALS $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y']; } sum(); echo $z; // الناتج: 30 ?>

مثال عملي: لوحة تحكم المستخدم

<?php // dashboard.php session_start(); // التحقق من تسجيل دخول المستخدم if (!isset($_SESSION['user_id'])) { header('Location: login.php'); exit; } // الحصول على معلومات المستخدم من الجلسة $username = $_SESSION['username']; $user_id = $_SESSION['user_id']; // الحصول على معامل الصفحة من الرابط $page = isset($_GET['page']) ? $_GET['page'] : 'overview'; // الحصول على معلومات الخادم $ip_address = $_SERVER['REMOTE_ADDR']; $user_agent = $_SERVER['HTTP_USER_AGENT']; ?> <!DOCTYPE html> <html> <head> <title>لوحة التحكم - <?php echo $username; ?></title> </head> <body> <h1>مرحبًا، <?php echo htmlspecialchars($username); ?>!</h1> <nav> <a href="?page=overview">نظرة عامة</a> <a href="?page=profile">الملف الشخصي</a> <a href="?page=settings">الإعدادات</a> <a href="logout.php">تسجيل الخروج</a> </nav> <div class="content"> <?php switch ($page) { case 'profile': echo "<h2>ملفك الشخصي</h2>"; break; case 'settings': echo "<h2>الإعدادات</h2>"; break; default: echo "<h2>نظرة عامة على لوحة التحكم</h2>"; echo "<p>معرف المستخدم: $user_id</p>"; echo "<p>IP: $ip_address</p>"; } ?> </div> </body> </html>

أفضل الممارسات

نصائح أمنية:
  • تحقق دائمًا من صحة بيانات المتغيرات العمومية الفائقة وقم بتنظيفها
  • استخدم isset() أو empty() قبل الوصول إلى مفاتيح المصفوفة
  • استخدم htmlspecialchars() عند الإخراج إلى HTML
  • استخدم العبارات المُجهزة لاستعلامات قاعدة البيانات
  • فضل $_POST على $_GET للبيانات الحساسة
  • لا تعرض أبدًا بيانات $_SERVER للمستخدمين دون تنظيف

تمرين تطبيقي

المهمة: أنشئ صفحة معلومات تعرض:

  1. رابط الصفحة الحالي (استخدم $_SERVER)
  2. طريقة الطلب (GET أو POST)
  3. عنوان IP للزائر
  4. معلومات المتصفح
  5. قبول معامل "theme" من الرابط (?theme=dark) واعرضه

التحدي: أضف التحقق للتأكد من أن معامل theme يقبل فقط قيم "light" أو "dark".

الملخص

في هذا الدرس، تعلمت عن:

  • ما هي المتغيرات العمومية الفائقة ولماذا هي مفيدة
  • المتغيرات العمومية الفائقة الرئيسية في PHP
  • $_SERVER لمعلومات الخادم والطلب
  • $_GET لمعاملات الرابط
  • $_POST لبيانات النماذج
  • $_REQUEST للبيانات المدمجة من GET/POST
  • $GLOBALS للوصول إلى المتغيرات العمومية
  • اعتبارات الأمان عند العمل مع إدخال المستخدم

بعد ذلك، سنستكشف نماذج HTML وكيفية معالجتها باستخدام PHP!