شرح صفوف ومحتوى الفقرة
اجمع بين ضوابط الواجهة الأمامية والخادم التالية لضمان بقاء نظام البحث الفوري سريعاً وآمناً تماماً ضد الهجمات.
- طبّق تأخير الكتابة Debounce (من 250 إلى 300 مللي ثانية) وألغِ الطلبات السابقة عبر
AbortController. - افرض حداً أدنى لطول النص (حرفان فأكثر) وحداً أقصى (60 محرفاً) داخل كود PHP.
- استخدم استعلامات PDO المحضرة مع تهريب رموز LIKE وتقييد النتائج بـ
LIMIT 8.
تزيل دالة normalizeSearchTerm() المسافات الزائدة، وتفحص حدود الطول بترميز UTF-8، وتهرّب الشرطة السفلية، وتحيط النص بعلامتي %.
| معيار الأداء / الأمان | مكان التطبيق | الأهمية العملية |
|---|---|---|
| Input Debounce (280ms) | Frontend JS | Cuts HTTP request volume by 80%+ |
AbortController | Frontend JS | Prevents stale responses overwriting newer ones |
mb_strlen($q) >= 2 | Both JS & PHP | Blocks expensive 1-letter table scans |
PDO Prepared LIKE :q | Backend PHP | Eliminates SQL Injection completely |
LIMIT 8 + Specific Columns | Backend SQL | Caps memory & network payload size |
textContent Rendering | Frontend DOM | Eliminates DOM-based XSS in dropdown |
PHP
<?php
function normalizeSearchTerm(string $raw): ?string {
$trimmed = trim($raw);
$len = mb_strlen($trimmed, 'UTF-8');
if ($len < 2 || $len > 60) {
return null;
}
return '%' . addcslashes($trimmed, '%_\\') . '%';
}
echo (normalizeSearchTerm(" pdo_8 ") ?? "SKIP") . "\n";
خلاصة المعرفة ومحطة الانتقال
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
اجمع بين ضوابط الواجهة الأمامية والخادم التالية لضمان بقاء نظام البحث الفوري سريعاً وآمناً تماماً ضد الهجمات. طبّق تأخير الكتابة Debounce (من 250 إلى 300 مللي ثانية) وألغِ الطلبات السابقة عبر AbortController. افرض حداً أدنى لطول النص (حرفان فأكثر) وحداً أقصى (60 محرفاً) داخل كود PHP. استخدم استعلامات PDO المحضرة مع تهريب رموز LIKE وتقييد النتائج بـ LIMIT 8.