Laravel / أساسي: أسس الطلب والبيانات / الدرس 4
Blade وبيانات العرض والإخراج الآمن
اعرض البيانات بعقود واضحة. ميّز صدى Blade المهرب منHTML الموثوق وافصل القالب من الاستعلام وقرار الإذن.
في هذه الصفحة
أهداف الدرس
- شرح ترجمة Blade والصدى المهرب.
- اختيار البيانات ومعالجة الإخراج حسب السياق.
- تمييز اختبار العرض من دليل إتاحة المتصفح.
يستهلك العرض بنية مجهزة عمداً
مرر ما يحتاجه القالب بمعان للغائب وnull والفراغ. لا تعطِ سجل التخزين كله وتفترض خصوصيته. تترجم Blade إلىPHP ولا تعزل كل شيفرة. افصل الأعمال والاستعلام. يعرض القالب المسموح ولا يفرض الإذن بإخفائه. الحقول والتسميات والتصحيح عقد العرض.
يعامل الصدى المهرب النص الخارجي كبيانات
تهرب الأقواس المزدوجة النص المعتاد مع معالجة قيمHTML الموسومة قصداً. يترجم المثال قالباً مؤلفاً موثوقاً وعنواناً مصطنعاً دون مزودات أو متصفح. لا تقيّم قوالب مستخدم اعتباطية؛ فالأمان هنا لملكية المصدر. تثبت الكيانات النص لا كل سياق JavaScript وCSS وعنوان وصفة.
<?php
declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php';
$compiler = new Illuminate\View\Compilers\BladeCompiler(new Illuminate\Filesystem\Filesystem(), __DIR__ . '/compiled');
$template = $compiler->compileString('Title: {{ $title }}');
$title = '<em>PHP</em>';
ob_start();
eval('?>' . $template);
echo ob_get_clean(), PHP_EOL;
Title: <em>PHP</em>
يصير العنوان كيانات حرفية دون فحص متصفح أو مصنع تطبيق.
الإخراج الخام قرار ثقة صريح
يتجاوز الخام وHtmlString التهريب. استخدمهما لبناء موثوق أو تنقية مراجعة لا لإخفاء الأقواس. لا يعني أمانHTML عنواناً وSQL وإذناً. عرّف الغني ومنقيه ولا تسمّ استبدالات قليلة آمنة للجميع. افصل الأصل من المهرب لتجنب التكرار بينHTML وJSON، وافحص العربية والنص الشبيه بالخطر.
إظهار التجاوز بوسوم مملوكة غير ضارة
يوسَم strong ثابت كـHTML موثوق ويعرض بصدى عادي، فتظهر الوسوم لعقد القيمة. ليس ذلك توصية بلف بيانات المستخدم. افحص تهريب الخارجي وخروج الثابت المراجع منفصلين لئلا يجعل تبسيط القالب كل عنوان وسوماً. ولا تقيم مقارنة النص الاستخدام أو إعلان القارئ.
<?php
declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php';
$compiler = new Illuminate\View\Compilers\BladeCompiler(new Illuminate\Filesystem\Filesystem(), __DIR__ . '/compiled');
$template = $compiler->compileString('{{ $content }}');
$content = new Illuminate\Support\HtmlString('<strong>Reviewed label</strong>');
ob_start();
eval('?>' . $template);
echo ob_get_clean(), PHP_EOL;
<strong>Reviewed label</strong>
يتجاوز الثابت التهريب؛ ولا تمنح الخارج هذا النوع دون سياسة.
إبقاء القالب قابلاً للاستخدام وكلفة الاستعلام ظاهرة
أعد العرض بمكونات وتخطيط مع اعتماد واضح. قد يطلق لمس علاقة غير محملة في الحلقةN+1، فجهز البيانات وافحص الاستعلام مستقلاً. تهم العناصر الأصلية والتسمية والخطأ والتركيز. لا تثبت الترجمة إتاحة أو تبايناً. افحص الفراغ والخطأ والتحميل بتقنيات ممثلة، وصن القالب الأصلي لا الملفات المترجمة.
الأخطاء الشائعة وإصلاحها
لف نص المستخدم بـHtmlString لإصلاح العرض
- لماذا يحدث؟
- اعتبار التهريب عيب تنسيق.
- كيف تصلحه؟
- حفظ التهريب أو سياسة غنية مراجعة.
- كيف تتجنب تكراره؟
- اختبار العنوان الحرفي والموثوق منفصلين.
إصدار استعلام لكل صف من القالب
- لماذا يحدث؟
- الوصول لعلاقة غير محملة أثناء العرض.
- كيف تصلحه؟
- تجهيز وتحميل المطلوب مسبقاً.
- كيف تتجنب تكراره؟
- فحص العدد والقيم المعروضة معاً.
اعتبار نجاح الترجمة إثبات إتاحة
- لماذا يحدث؟
- الخلط بين النص والتفاعل.
- كيف تصلحه؟
- إضافة فحوص مهام لوحة المفاتيح والتقنيات.
- كيف تتجنب تكراره؟
- تحديد الطرق والحالات والحدود.
اختبر فهمك
1. يحوي العنوان <strong>. كيف يعرض عادة؟
اعرض الحل المشروح
استخدم الصدى المهرب لحرفية النص وافحص غياب وسوم جديدة. التنسيق الغني عقد آخر لا خام مكافئ بريء.
2. لماذا قد يكون القالب صحيحاً وله مشكلة بيانات؟
اعرض الحل المشروح
قد يلمس علاقة لكل صف فيزيد الاستعلام أو يكشف حقلاً. جهز البيانات والإذن وافحص العدد والحقول والعرض ملاحظات منفصلة.
أهم ما تعلمته
- للنص المهرب وHTML الموثوق والسياقات عقود مختلفة.
- تشمل صحة العرض تجهيز البيانات ودليل المهمة الفعلية.