انتقل إلى محتوى الدرس

Deprecation of FILTER_SANITIZE_STRING بدائل FILTER_SANITIZE_STRING الملغى في PHP 8.1+

اضبط حدود النطاقات الرقمية والقيم الافتراضية وأعلام التحقق من العناوين وفحص المدخلات مباشرة عبر filter_var وfilter_input في PHP 8.
1 صفوف تعليمية
PHP
0 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

تم إيقاف وإلغاء FILTER_SANITIZE_STRING في PHP 8.1+ لأن حذف الوسوم وترميز علامات الاقتباس عند الإدخال يشوه النصوص المشروعة ولا يضمن الحماية الكاملة في كل سياقات العرض.

  • لا تستخدم FILTER_SANITIZE_STRING أبداً في PHP 8.1+ لأنها تطلق تحذير إهمال (Deprecated).
  • بدلاً من ذلك، نظف النص عند الإدخال بـ trim() وتحقق من طوله بـ mb_strlen()، ثم خزّن النص الحقيقي كما هو في قاعدة البيانات.
  • رمّز المخرجات لحماية HTML لحظة العرض فقط داخل القالب عبر htmlspecialchars($text, ENT_QUOTES | ENT_SUBSTITUTE, "UTF-8").

يحافظ الفصل بين التحقق من المدخلات وترميز المخرجات عند العرض على النص الأصلي السليم لقاعدة البيانات مع منع حقن HTML في المتصفح.

الثابت / الدالةالتصنيفالحالة في PHP 8.4 وأفضل ممارسة
FILTER_VALIDATE_INTتحقق (Validation)مدعوم — يدعم خيارات min_range وmax_range وdefault
FILTER_VALIDATE_IPتحقق (Validation)مدعوم — يدعم رايات IPV4 وIPV6 وNO_PRIV_RANGE
FILTER_VALIDATE_BOOLتحقق (Validation)مدعوم — يُقرن مع الراية FILTER_NULL_ON_FAILURE
filter_input_array()تحقق جماعي (Batch)مدعوم — يفحص مصفوفة المدخلات دفعة واحدة وفق مخطط القواعد
FILTER_SANITIZE_STRINGتعقيم (Sanitization)مُهمل في PHP 8.1+ — استخدم trim() عند الإدخال وhtmlspecialchars() عند العرض
PHP
<?php
$rawBio = "  I love O'Reilly books & <PHP 8.4>!  ";

// 1. Input stage: normalize whitespace & validate length
$cleanBio = trim($rawBio);
$isValid  = mb_strlen($cleanBio) <= 160;

// 2. Output stage (HTML context): escape safely
$safeHtml = htmlspecialchars($cleanBio, ENT_QUOTES | ENT_SUBSTITUTE, "UTF-8");
echo "Valid ($isValid): $safeHtml\n";
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

تم إيقاف وإلغاء FILTER_SANITIZE_STRING في PHP 8.1+ لأن حذف الوسوم وترميز علامات الاقتباس عند الإدخال يشوه النصوص المشروعة ولا يضمن الحماية الكاملة في كل سياقات العرض. لا تستخدم FILTER_SANITIZE_STRING أبداً في PHP 8.1+ لأنها تطلق تحذير إهمال (Deprecated). بدلاً من ذلك، نظف النص عند الإدخال بـ trim() وتحقق من طوله بـ mb_strlen()، ثم خزّن النص الحقيقي كما هو في قاعدة البيانات. رمّز المخرجات لحماية HTML لحظة العرض فقط داخل القالب عبر htmlspecialchars($text, ENT_QUOTES | ENT_SUBSTITUTE, "UTF-8").