🛡️ دليلك الشامل لفهم الفلاتر (Filters) في لغة PHP
سنتحدث عن مفهوم حيوي جداً في بناء أي موقع إلكتروني، وهو "الفلاتر" أو Filters.
عندما تقوم بإنشاء نموذج (Form) في موقعك ويقوم المستخدم بإدخال بيانات، لا يمكنك أبداً الوثوق في هذه البيانات بشكل كامل. قد يقوم المستخدم بإدخال بريد إلكتروني خاطئ، أو قد يحاول إدخال رموز خبيثة. هنا يأتي دور الفلاتر لتكون بمثابة "المصفاة" التي تضمن أن البيانات التي تدخل إلى نظامك صحيحة ونظيفة. 🧹
🔍 ما هي الفلاتر في PHP؟
الفلاتر في PHP هي دوال جاهزة توفرها اللغة للقيام بمهمتين أساسيتين:
- التحقق (Validation): التأكد من أن القيمة تتبع صيغة معينة (مثلاً: هل هذا النص هو بريد إلكتروني حقيقي؟).
- التنقية (Sanitization): إزالة الرموز غير المرغوب فيها من البيانات (مثلاً: إزالة الأكواد البرمجية من نص عادي لمنع الاختراق).
ببساطة: التحقق يخبرك "نعم" أو "لا"، أما التنقية فهي تقوم "بتعديل" النص لجعله آمناً.
🛠️ أولاً: التحقق من البيانات باستخدام filter_var()
الدالة الأكثر شهرة هي filter_var(). تأخذ هذه الدالة وسيطين (Arguments) أساسيين: القيمة التي تريد فحصها، ونوع الفلتر الذي تريد استخدامه.
مثال 1: التحقق من البريد الإلكتروني (Email Validation)
نريد التأكد من أن المستخدم أدخل بريداً إلكترونياً بصيغة صحيحة.
<?php
$email = "user@example.com";
// التحقق مما إذا كان البريد الإلكتروني صحيحاً
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "This email is valid!"; // البريد الإلكتروني صحيح
} else {
echo "Invalid email format!"; // صيغة البريد خاطئة
}
?>
مثال 2: التحقق من الأرقام الصحيحة (Integer Validation)
للتأكد من أن المدخل هو رقم صحيح وليس نصاً.
<?php
$age = "25"; // القيمة هنا نصية ولكنها تمثل رقماً
if (filter_var($age, FILTER_VALIDATE_INT)) {
echo "The age is a valid integer."; // العمر رقم صحيح
} else {
echo "Please enter a valid number."; // القيمة ليست رقماً صحيحاً
}
?>
🧼 ثانياً: تنقية البيانات (Sanitization)
أحياناً لا نريد رفض المدخلات، بل نريد "تنظيفها" من الشوائب. هنا نستخدم فلاتر التنقية. أشهرها هو FILTER_SANITIZE_STRING (الذي يقوم بإزالة وسوم HTML والرموز الخاصة).
مثال: تنظيف نص من الرموز الضارة
تخيل أن مستخدماً حاول إدخال كود HTML داخل حقل "الاسم".
<?php
$userInput = "<h1>Hello</h1> World!"; // مستخدم يحاول إدخال وسم HTML
// تنظيف النص لإزالة وسوم HTML
$cleanInput = filter_var($userInput, FILTER_SANITIZE_STRING);
echo $cleanInput;
// المخرجات ستكون: Hello World! (تم حذف وسوم h1)
?>
📥 ثالثاً: التعامل مع المدخلات الخارجية filter_input()
بدلاً من جلب البيانات عبر $_POST أو $_GET ثم فحصها، توفر PHP دالة filter_input() التي تقوم بجلب القيمة وفحصها في خطوة واحدة. هذا يجعل الكود أكثر ترتيباً وأماناً.
مثال: جلب بريد إلكتروني من الرابط (URL) وتنظيفه
<?php
// جلب القيمة من GET وتطبيق فلتر التحقق من البريد الإلكتروني مباشرة
$email = filter_input(INPUT_GET, 'email', FILTER_VALIDATE_EMAIL);
if ($email) {
echo "Valid email received: " . $email;
} else {
echo "Invalid or missing email!";
}
?>
شرح المثال:
INPUT_GET: تخبر PHP أن يبحث في مصفوفة$_GET.'email': هو اسم الحقل (Key) الذي نرسله في الرابط.FILTER_VALIDATE_EMAIL: هو الفلتر الذي سيتم تطبيقه فوراً.
💡 ملخص سريع للفرق بين Validation و Sanitization
| وجه المقارنة | التحقق (Validation) | التنقية (Sanitization) |
|---|---|---|
| الهدف | التأكد من صحة الصيغة | تنظيف البيانات من الشوائب |
| النتيجة | تعيد true أو false (أو القيمة) |
تعيد النص بعد تعديله وتنظيفه |
| مثال | هل هذا رقم هاتف؟ | احذف الرموز الغريبة من الاسم |
🎓 اختبر معلوماتك
التعليقات
شاركنا رأيك أو أسئلتك حول هذا المقال