🐘 شرح PHP

المتغيّرات الفائقة (Superglobals)

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

مصفوفات مدمجة متاحة في كل نطاقات الكود دون تمرير، تحمل بيانات الطلب والخادم والجلسة.

المتغيّرالمحتوى
$_GETبيانات رابط URL (?key=value)
$_POSTبيانات نموذج مُرسَل بـ POST
$_REQUESTGET + POST معًا
$_SERVERمعلومات الخادم والطلب
$_SESSIONبيانات الجلسة
$_COOKIEالكوكيز
$_FILESالملفّات المرفوعة

$_GET — بيانات الرابط

<?php
// الرابط: page.php?id=5&sort=name
$id = $_GET["id"] ?? null;       // 5
$sort = $_GET["sort"] ?? "id";   // name
?>

$_POST — بيانات النموذج

<?php
// من نموذج <form method="POST">
$username = $_POST["username"] ?? "";
$email = $_POST["email"] ?? "";
?>

⚠️ نظّف مدخلات المستخدم دائمًا بـ htmlspecialchars() قبل عرضها (منع XSS)، واستخدم الاستعلامات المُجهّزة قبل قواعد البيانات (منع حقن SQL).

$_SERVER — معلومات الطلب

<?php
echo $_SERVER["REQUEST_METHOD"];   // GET أو POST
echo $_SERVER["HTTP_HOST"];        // النطاق
echo $_SERVER["REQUEST_URI"];      // المسار المطلوب
echo $_SERVER["REMOTE_ADDR"];      // IP الزائر
?>

مثال: التحقّق من نوع الطلب

<?php
if ($_SERVER["REQUEST_METHOD"] === "POST") {
    // معالجة بيانات النموذج
    $name = $_POST["name"] ?? "";
    echo "تمّ الاستلام: " . htmlspecialchars($name);
} else {
    // عرض النموذج
    echo "<form method='POST'>...</form>";
}
?>

أخطاء شائعة

  • استخدام بيانات $_GET/$_POST مباشرة دون تنظيف (ثغرات أمنية).
  • الوصول لمفتاح غير موجود دون ?? فتظهر تحذيرات Undefined key.

🎯 التالي: التعابير النمطية (RegEx).