فهم المتغيرات العمومية الفائقة
المتغيرات العمومية الفائقة في 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 للمستخدمين دون تنظيف
تمرين تطبيقي
المهمة: أنشئ صفحة معلومات تعرض:
- رابط الصفحة الحالي (استخدم
$_SERVER)
- طريقة الطلب (GET أو POST)
- عنوان IP للزائر
- معلومات المتصفح
- قبول معامل "theme" من الرابط (?theme=dark) واعرضه
التحدي: أضف التحقق للتأكد من أن معامل theme يقبل فقط قيم "light" أو "dark".
الملخص
في هذا الدرس، تعلمت عن:
- ما هي المتغيرات العمومية الفائقة ولماذا هي مفيدة
- المتغيرات العمومية الفائقة الرئيسية في PHP
$_SERVER لمعلومات الخادم والطلب
$_GET لمعاملات الرابط
$_POST لبيانات النماذج
$_REQUEST للبيانات المدمجة من GET/POST
$GLOBALS للوصول إلى المتغيرات العمومية
- اعتبارات الأمان عند العمل مع إدخال المستخدم
بعد ذلك، سنستكشف نماذج HTML وكيفية معالجتها باستخدام PHP!