
المشاركة الأصلية كتبت بواسطة جريح الحب
ماجاوبتني على سؤالي ولكن سأجاوبك حتى تتضح الصوره عن الفرق بين الكوديين
الكوود الأول كان بالشكل التالي:
كود PHP:
eval('$navbar = "' . fetch_template('navbar') . '";');
بعد استبدال دالة eval بدالة print يصبح
كود PHP:
print('$navbar = "' . fetch_template('navbar') . '";');
طيب نجي للتسلسل في التنفيذ داخل الـ php لهذا السطر الذي عدلناه.
الأول يتم تنفيذ الداله fetch_template التي تستدعي محتوى القالب المسمى navbar والذي يحتوي على القالب الذي يحتوي على رموز html ومتغيرات php .
فلنفرض أن القالب يحتوي على مايلي:
كود HTML:
<div>$header</div>
عند رجوع دالة fetch_template بالقالب السابق سيصبح السطر الذي بالأعلى كالتالي:
كود PHP:
print('$navbar = "<div>$header</div>";');
لذلك ستطبع دالة print السطر التالي:
كود HTML:
$navbar = "<div>$header</div>";
هذا السطر الذي تمت طباعته من دالة print لو قمنا بإدخاله داخل دالة eval سيتم تنفيذه كسطر من أسطر الـ PHP .
وسيتم إعطاء المتغير $navbar
القيمه التي ستحصل من ناتج الطرف الأيمن وهو:
"<div>$header</div>"
لأننا حوطنا النص بعلامة التنصيص " فسوف يتم إحتساب قيمة المتغير $header أولا وبعدها يتم إضافته داخل علامات الdiv وبعدها ستؤول النتيجه الى متغير navbar أما لو كانت علامة التنصيص المفرد ' فلن يتم إحتساب متغير $header وهذه نقطه يجب أن يعرفها أي شخص مبرمج php .
فإذا قمنا بوضع تعليمة php داخل القالب السابق بدلا من $header فسوف يتم إحتسابه كنص مكتوووووووب.
على سبيل المثال القالب التالي:
كود HTML:
<div><?php system('uname');?></div>
هذا بالنسبه للكود الأول.
أما الكوود الثاني الذي يستخدم في أنظمة الـ hooks في نسخ 3.5 فهو كالتالي:
كود PHP:
($hook = vBulletinHook::fetch_hook('forumhome_start')) ? eval($hook) : false;
سنقوم بتغيير دالة eval الى دالة print وسيصبح السطر بالشكل التالي:
كود PHP:
($hook = vBulletinHook::fetch_hook('forumhome_start')) ? print($hook) : false;
أولا وحسب التسلسل البرمجي لهذا السطر فسيتم إستدعاء الهووك المسمى forumhome_start من دالة fetch_hook الموجوده في الكلاس المسمى vBulletinHook .
ناتج هذا الهوووك من قيم سيتم تخزينه في متغير $hook .
لنفرض أن قيمة هذا الهووك كانت تحتوي على مايلي:
كود PHP:
system('uname');
بعد أن يتم تخزين القيمه في متغير $hook سيتم النظر في علامة الاستفهام ( ؟ ) وهذه تعني أننا بداخل شرط برمجي فإذا كانت قيمة الشرط الموجوده يسار علامة الاستفهام موجبه فسوف يتم تنفيذ:
أما لو كانت قيمة الشرط سالبه فسوف يتم تنفيذ
قيمة الشرط ستكون موجبه طبعاً لأننا حملنا الهووك بداخل متغير $hook وأصبح متغير $hook يحمل قيمه .
لذلك سيتم بكل بساطه تنفيذ :
والذي بدوره يقوم بطبع قيمة متغير $hook والتي ستكون طبعاً كما ذكرنا سابقاً:
كود PHP:
system('uname');
لو تم إدخال هذه القيمه المطبوعه داخل دالة eval فماذا سيحدث 
أنت تعلم ماذا سيحدث لذلك أحببت التوضيح للفرق الكبير بين السطرين.
الاخ الرومانتك
انا هنا بسوالف ولست هناك بالـ mbc 
والله ياطيب انا عاصرت منتديات الـ vb من النسخه الأولى ورأيت كيف تطورت وأرى أن أقوى نسخ هي نسخ 3.0.5 ومافوق .
وأما الفلتره فلا أعتقد أنهم سيعملوها لأنها متعبه لهم وأنا أرى أن الحل الأنسب هو الإزاله من جذورها لهذا النظام هوووك وبس 
اما عن سؤالك عن برمجيات فأنا متوقف بالحقيقه بسبب متابعة الأسهم 
الاخ AbO SalAh ElDiN
أنصح باخر نسخه نزلت من اصدار 3.0 وهي 3.0.14 والله يوفقكم لما يحب ويرضى.
موفقين