شرح التحقق من المدخلات (Validation) في PHP
بعد تعلم GET وPOST، وصلنا إلى خطوة أساسية في أي مشروع حقيقي: التحقق من المدخلات (Validation). أي بيانات تأتي من المستخدم قد تكون ناقصة، خاطئة، أو حتى خبيثة.
الهدف من Validation هو التأكد أن البيانات صالحة وآمنة قبل عرضها أو حفظها في قاعدة البيانات.
لماذا Validation مهمة في PHP؟
- منع إدخال بيانات فارغة أو غير منطقية.
- تقليل الأخطاء داخل التطبيق.
- رفع مستوى الأمان (خصوصاً ضد XSS وبعض الهجمات الشائعة).
مثال 1: التحقق من الحقول الفارغة
الكود:
<?php
if (empty($_POST["username"])) {
echo "خطأ: اسم المستخدم مطلوب";
} else {
echo "تم إدخال الاسم بنجاح";
}
?>
شرح كود PHP:
empty()تفحص هل القيمة فارغة.- إذا كانت فارغة نعرض رسالة خطأ واضحة.
- إذا كانت موجودة نكمل المعالجة.
مثال 2: تنظيف النص قبل العرض باستخدام htmlspecialchars()
الكود:
<?php
$name = htmlspecialchars($_POST["name"]);
echo "مرحباً " . $name;
?>
هذه الدالة تحول الرموز الخاصة مثل < و> إلى صيغة آمنة عند العرض،
ما يساعد على منع تنفيذ سكربتات ضارة داخل الصفحة.
مثال 3: التحقق من البريد الإلكتروني باستخدام filter_var()
الكود:
<?php
$email = $_POST["email"];
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "البريد الإلكتروني غير صحيح";
} else {
echo "بريد إلكتروني صحيح";
}
?>
شرح كود PHP:
filter_var()تطبق فلتر التحقق على القيمة.FILTER_VALIDATE_EMAILيتأكد أن صيغة البريد صحيحة.
Workflow بسيط للتحقق من نموذج
- تأكد أن الطلب
POST. - افحص الحقول المطلوبة بـ
empty(). - تحقق من الصيغ (مثل البريد) بـ
filter_var(). - نظّف المخرجات قبل العرض بـ
htmlspecialchars().
أخطاء شائعة للمبتدئين
- الاكتفاء بالتحقق في الواجهة فقط بدون تحقق في الخادم.
- عرض مدخلات المستخدم مباشرة بدون
htmlspecialchars(). - عدم التمييز بين "تنظيف" البيانات و"التحقق" من صحتها.
- إظهار رسائل خطأ عامة جداً لا تساعد المستخدم على التصحيح.
تمرين تطبيقي سريع
- أنشئ نموذجاً فيه
usernameوemail. - اجعل الإرسال بطريقة
POST. - تحقق أن
usernameغير فارغ. - تحقق من
emailباستخدامfilter_var(). - اعرض القيم بشكل آمن باستخدام
htmlspecialchars().
الأسئلة الشائعة — FAQ
ما المقصود بـ Validation في PHP؟
هي عملية التحقق من صحة البيانات قبل استخدامها أو تخزينها.
لماذا نستخدم htmlspecialchars()؟
لتحويل المخرجات إلى صيغة آمنة عند العرض وتقليل مخاطر XSS.
كيف أتحقق من البريد الإلكتروني؟
باستخدام filter_var($email, FILTER_VALIDATE_EMAIL).
هل التحقق في JavaScript وحده كافٍ؟
لا. يجب وجود تحقق في الخادم عبر PHP لأنه هو التحقق الملزم فعلياً.