ENV#: السياق

علامة تتيح الحصول على قيمة متغير توفرها صفحة مدرجة #INCLURE او من عنوان URL

[(#ENV{متغير, قيمة إفتراضية})] (منذ الاصدار ١.٨، ١.٨.١ من SPIP)

تتيح #ENV{variable} الوصول الى متغيرات بيئة صفحة نموذجية (اي سياقها) [1].

ويمكن للصفحة الحصول على المتغير من عنوان URL (اي استفسار HTTP) او من الملف الذي يحتويها او حتى من نتائج ملء استمارة.

مثال متغير تم تمريره في عنوان URL: spip.php?rubrique24&id_mot=5
في rubrique.html، يساوي #ENV{id_mot} ٥.

مثال متغير تم تمريره في إدراج <INCLURE{fond=my_template} {id_article=136}>INCLURE:
في my_template.html، يساوي #ENV{id_article} ١٣٦.

القيم الافتراضية

[(#ENV{متغير, قيمة إفتراضية})]: العامل الاختياري قيمة إفتراضية يحتوي القيمة المسترجعة اذا لم يكن المتغير موجوداً (يعادل [(#ENV{متغير}|sinon{قيمة إفتراضية})]).

وتظهر فائدة هذه العلامة بشكل أوضح عندما توجد صفحة نموذجية تدرجها عدة صفحات أخرى ونريد تصرف مختلف حسب السياق.

تخطي معالجات الأمان

يطبق SPIP افتراضياً دالتي interdire_scripts وentites_html على علامة #ENV. ومثل العلامات الأخرى، يمكن إلغاء المعالجة الآلية بواسطة #ENV* و#ENV** (حول استخدام * و**، أنظر القال #BALISE* et #BALISE** ).

تسترجع #ENV* المتغير دون تطبيق المرشح entites_html عليه، وبالتالي دون تحويل الحروف الخاصة الى كيانات HTML.
أما #ENV**، فتسترجع المتغير دون تطبيق دالة interdire_scripts. وبالتالي تسترجع اوامر PHP المنفّذة. [2]

يمكن لهذا الأمر ان يتسبب بمشكلة أمان اذا تلقى المتغير اوامر PHP. لذلك وجدت دالة interdire_scripts افتراضياً لمنع تنفيذ < وأوامر من نوع <script language=php> التي قد تدخل على المتغير.

الا ان #ENV** تستخدم عندما ننشئ استمارة. فاستخدام النجمة المزدوجة يصبح ضرورياً في عرض استمارات CVT لاسترجاع جدول الأخطاء في صفحة الاستمارة:
  #ENV**{erreurs}|table_valeur{مفتاح}...

   
   
   

حواشي

[1بداعي الأمان، لا تسترجع (ولا تعرض) #ENV المتغيرات المسماة PHPSESSID او المتغيرات التي يبدأاسمها بـvar_ (مثل var_mode et var_profile)

[2لنأخذ مثلاً استمارة بسيطة:

<form method="get">
<input type="text" name="test" value="#ENV{test}"> <input type="submit">
</form>
#ENV{test}<br />
#ENV*{test}<br />
#ENV**{test}<br />

وفي الاستمارة، ندخل: <?php echo date('Y-m-d'); ?> في حقل «test» وننقر على موافق.

 تسترجع #ENV{test} (مصدر HTML) التالي: &lt;?php echo date('Y-m-d'); ?&gt;
 وتسترجع #ENV*{test} (مصدر HTML) التالي: &lt;?php echo date('Y-m-d'); ?>
 وتسترجع #ENV**{test} (مصدر HTML) التالي: 2009-02-12 أي الأمر المنفّذ.

مؤلف George نُشر في: تم التحديث: 26/10/12

الترجمات: عربي, català, English, Español, français, Nederlands, русский, Türkçe, українська