SHTML و ASP متشابهة. في الملفات التي تم تسميتها باسم SHTML ، يتم استخدام بعض تعليمات SSI ، تمامًا مثل الإرشادات الواردة في ASP. يمكنك كتابة تعليمات SSI في ملف SHTML. عندما يصل العميل إلى ملفات SHTML هذه ،
سيقوم جانب الخادم بقراءة وتفسير ملفات SHTML هذه ، وتفسير تعليمات SSI الواردة في ملف SHTML. على سبيل المثال: يمكنك استخدام تعليمات SSI للإشارة إلى ملفات HTML الأخرى (#include) في ملف SHTML. الملف الذي أرسله الخادم إلى العميل هو أن SHTML الموضح بالفعل لا يحتوي على تعليمات SSI. إنه ينفذ الوظائف التي لا تملكها HTML ، أي أنه يمكن أن ينفذ الديناميات
يمكن القول أن SHTML هو تطور HTML. مثل نظام الأخبار في سينا ، يتم إصلاح محتوى الأخبار ، ولكن يتم نقل الإعلانات والقوائم الموجودة عليه في #include.
حاليا ، هناك بشكل أساسي الاستخدامات التالية:
1. عرض متغيرات البيئة من جانب الخادم <##echo>
2. أدخل محتوى النص مباشرة في المستند <#include>
3. عرض المعلومات المتعلقة وثيقة الويب <#flastmod> <#fsize> (مثل تاريخ/حجم إنشاء الملف ، وما إلى ذلك)
4. تنفيذ البرامج المختلفة مباشرة على الخادم <##Exec> (مثل CGI أو غيرها من البرامج القابلة للتنفيذ)
5. اضبط تنسيق عرض معلومات SSI <#config> (مثل طريقة عرض تاريخ إنشاء الملف/الحجم)
يمكن ل SSI المتقدمة <xssi> تعيين المتغيرات لاستخدامها إذا كانت البيانات الشرطية.
باستخدام SSI
SSI هي مجموعة من الأوامر المقدمة لخوادم الويب. يتم تضمين هذه الأوامر مباشرة في محتوى التعليق لمستند HTML. يحب:
<#include file = info.htm->
إنه توجيه SSI ، والذي يستخدم لنسخ محتوى info.htm إلى الصفحة الحالية. عندما يتصفح الزائر ، سيرى أن مستندات HTML الأخرى تعرض محتوى info.htm.
إن أشكال استخدام تعليمات SSI الأخرى هي في الأساس مثل تلك المذكورة الآن. يمكن ملاحظة أن استخدام SSI هو مجرد إدخال رمز صغير ، وأن نماذج الاستخدام بسيطة للغاية.
بالطبع ، إذا كان خادم الويب لا يدعم SSI ، فسوف يعامله ببساطة كمعلومات شرحية وتخطي المحتوى مباشرة ؛ سوف يتجاهل المتصفح هذه المعلومات.
كيفية تكوين وظائف SSI على خادم الويب الخاص بي؟
على بعض خوادم الويب (مثل IIS 4.0/Sambar 4.2) ، يجب أن تستخدم الملفات التي تحتوي على التوجيه #include امتدادًا تم تعيينه إلى مترجم SSI ؛ خلاف ذلك ، لن يقوم خادم الويب بمعالجة توجيه SSI ؛ بشكل افتراضي ، يتم تعيين الامتدادات .stm و .shtm و .shtml إلى المترجم (ssinc.dll).
يعتمد Apache على إعداداتك ، وتعديل Srm.Conf مثل:
سوف AddType Text/X-Server-parsed-HTML .Shtml تحليل توجيهات SSI فقط للملفات مع امتداد .shtml
سوف AddType Text/X-Server-parsed-HTML .HTML تحليل توجيهات SSI لجميع مستندات HTML
يمكن لـ NetScape Web Server استخدام خادم الإدارة مباشرة (الخادم الإداري) لتمكين وظيفة SSI.
يستخدم موقع الويب علامة تعيين في برنامج مسؤول الخادم ، ويضيف نوع المحتوى على النحو التالي: wwwserver/html-ssi
خادم CERN لا يدعم SSI. يمكنك استخدام طريقة عملية احتيال SSI. قم بتنزيل برنامج نصي بيرل على http://sw.cse.bris.ac.uk/webtools/fakessi.html لجعل خادم CERN الخاص بك يستخدم بعض تعليمات SSI. (توجيه EXEC غير مدعوم.)
تنسيق تعليمات SSI الأساسية
تنسيق تعليمات SSI الأساسية:
رمز البرنامج:
<! ---- اسم التعليمات = معلمات التعليمات>
<! ---- اسم التعليمات = معلمات التعليمات>
يحب
رمز البرنامج:
<#include file = info.htm->
<#include file = info.htm->
يوضح:
1. <!--> هو شرح في بناء جملة HTML. سيتم تجاهل هذه المعلومات عندما لا يدعم خادم الويب SSI.
2. #include هي واحدة من توجيهات SSI.
3. الملف هو معلمة تضمين ، info.htm هي قيمة المعلمة ، ويشير إلى اسم المستند الذي سيتم تضمينه في هذه التعليمات.
يلاحظ:
1. <!-لا توجد مساحة بين رقم # ، فقط تعليمات SSI والمعلمات موجودة.
2. علامات الترقيم أعلاه = ، لا يمكن لأحد أن يفقد.
3. تعليمات SSI حساسة للحالة ، لذلك يجب أن تكون المعلمات صغيرة للعمل.
شرح مفصل لاستخدام تعليمات SSI
#
تأثير:
أدخل متغيرات البيئة في الصفحة.
القواعد:
رمز البرنامج:
<!-#echo var = اسم متغير->
<!-#echo var = اسم متغير->
اسم هذا المستند: رمز البرنامج:
<!-#echo var = document_name->
<!-#echo var = document_name->
الوقت الحالي: رمز البرنامج:
<!-#echo var = date_local->
<!-#echo var = date_local->
عنوان IP الخاص بك هو رمز البرنامج:
<!-#echo var = remote_addr->
<!-#echo var = remote_addr->
#في مظاهرة
تأثير:
أدخل محتويات الملف النصي مباشرة في صفحة المستند.
القواعد:
رمز البرنامج:
<#include file = اسم الملف->
<#include virtual = اسم الملف->
<#include file = اسم الملف->
<#include virtual = اسم الملف->
اسم الملف هو مسار نسبي بالنسبة للدليل حيث يوجد المستند باستخدام التوجيه #include. يمكن أن تكون الملفات المضمّنة في نفس الدليل أو دليلها الفرعي ، ولكن ليس في دليل المستوى السابق. إذا كان مستند nav_head.htm في الدليل الحالي هو ملف = nav_head.htm.
اسم الملف الظاهري هو المسار الكامل للدليل الظاهري على موقع الويب. إذا كان ذلك يعني ملف nav_head.htm في دليل Hoyi ضمن دليل الجذر لمستند الخادم ؛ ثم هو ملف =/hoyi/nav_head.htm
المعلمة:
يحدد الملف موقع الملف الذي يحتوي على هذا المستند
يحدد الافتراضي الموقع بالنسبة إلى الدليل الجذر لمستند الخادم
يلاحظ:
1. يجب أن يكون لاسم الملف امتداد.
2. يمكن أن يكون للملفات المضمنة أي ملحق ملف. أعتقد أنه من الأفضل استخدام امتداد HTM مباشرة. توصي Microsoft باستخدام امتداد .inc (يعتمد على هوايتك).
مثال:
رمز البرنامج:
<#include file = nav_head.htm-> أدخل ملف الرأس إلى الصفحة الحالية
<#include file = nav_foot.htm-> أدخل ملف الذيل إلى الصفحة الحالية
<#include file = nav_head.htm-> أدخل ملف الرأس إلى الصفحة الحالية
<#include file = nav_foot.htm-> أدخل ملف الذيل إلى الصفحة الحالية
#flastmod و #fsize المظاهرات
الوظيفة: ملف #FlastMod آخر تاريخ تحديث
#fsize طول الملف
القواعد:
رمز البرنامج:
<!-#flastmod file = file name->
<!-#fsize file = اسم الملف->
<!-#flastmod file = file name->
<!-#fsize file = اسم الملف->
المعلمة:
يحدد الملف موقع الملف الذي يحتوي على هذا المستند ، مثل info.txt ، والذي يمثل مستند info.txt في الدليل الحالي.
تحدد الافتراضية الموقع بالنسبة إلى الدليل الجذر لمستند الخادم ، مثل /hoyi/Info.txt
يلاحظ:
يجب أن يحتوي اسم الملف على امتداد.
مثال:
رمز البرنامج:
<!-#flastmod file = news.htm->
<!-#flastmod file = news.htm->
أدخل آخر تاريخ تحديث لملف news.htm في الدليل الحالي في الصفحة الحالية
رمز البرنامج:
<!-#fsize file = news.htm->
<!-#fsize file = news.htm->
أدخل حجم ملف news.htm في الدليل الحالي في الصفحة الحالية
#Exec العرض
تأثير:
أدخل إخراج برنامج خارجي في الصفحة. يمكن إدراجها في برامج CGI أو مدخلات من تطبيق منتظم ، اعتمادًا على ما إذا كانت المعلمات المستخدمة هي CMD أو CGI.
القواعد:
رمز البرنامج:
<!-#exec cmd = اسم الملف->
<!-#exec cgi = اسم الملف->
<!-#exec cmd = اسم الملف->
<!-#exec cgi = اسم الملف->
المعلمة:
تطبيقات CMD العادية
برنامج البرنامج النصي CGI CGI
مثال:
رمز البرنامج:
<!-#exec cmd = cat /etc /passwd-> ستعرض ملف كلمة المرور
<!-#exec cmd = dir /b-> ستعرض قائمة الملفات في الدليل الحالي
<!-#exec cgi =/cgi-bin/gb.cgi-> سيتم تنفيذ برنامج CGI gb.cgi.
<!-#exec cgi =/cgi-bin/access_log.cgi-> سيتم تنفيذ برنامج CGI Access_Log.cgi.
<!-#exec cmd = cat /etc /passwd-> ستعرض ملف كلمة المرور
<!-#exec cmd = dir /b-> ستعرض قائمة الملفات في الدليل الحالي
<!-#exec cgi =/cgi-bin/gb.cgi-> سيتم تنفيذ برنامج CGI gb.cgi.
<!-#exec cgi =/cgi-bin/access_log.cgi-> سيتم تنفيذ برنامج CGI Access_Log.cgi.
يلاحظ:
كما يتضح من المثال أعلاه ، فإن هذه التعليمات مريحة للغاية ، ولكن هناك أيضًا مشكلات أمنية.
الطريقة المحظورة:
. Apache ، حذف الخيارات يتضمن خط execcgi في Access.conf ؛
. في IIS ، لتعطيل الأمر #EXEC ، يمكنك تعديل metadatabase ssiexecdisable ؛
#Config
الوظيفة: يحدد تنسيق رسالة الخطأ والتاريخ وحجم الملف الذي تم إرجاعه إلى متصفح العميل.
القواعد:
رمز البرنامج:
<!-#configerrmsg = رسالة خطأ مخصصة->
<!-#configizefmt = وحدة العرض->
<!-#configtimefmt = display format->
<!-#configerrmsg = رسالة خطأ مخصصة->
<!-#configizefmt = وحدة العرض->
<!-#configtimefmt = display format->
المعلمة:
ERRMSG Custom SSI يمكن استخدام رسائل خطأ تنفيذ الرسائل بأي طريقة تريدها.
يمكن تغيير طريقة عرض حجم ملف SizeFMT ، وهي طريقة البايت (Bytes) إلى طريقة Kilobyte (ABBREV)
طريقة عرض الوقت TimeFMT ، سمة التكوين الأكثر مرونة.
مثال: يوضح حجم ملف غير موجود
رمز البرنامج:
<!-#configerrmsg = خطأ في تنفيذ الخادم ، يرجى الاتصال بالمسؤول [email protected] ، شكرًا لك! ->
<!-#fsize file = no file.htm->
<!-#configerrmsg = خطأ في تنفيذ الخادم ، يرجى الاتصال بالمسؤول [email protected] ، شكرًا لك! ->
<!-#fsize file = no file.htm->
عرض حجم الملف بالكيلوبايت
رمز البرنامج:
<!-#configizefmt = abbrev->
<!-#fsizefile = news.htm->
<!-#configizefmt = abbrev->
<!-#fsizefile = news.htm->
عرض الوقت بتنسيق زمني محدد
رمز البرنامج:
<!-#configtimefmt = ٪ y سنة/٪ m month d day و week ٪ w beijing الوقت ٪ h: ٪ m: ٪ s ، ٪ y قد مرت ٪ j أيام اليوم هو ٪ u week of y y y year->
<!-#echo var = date_local-> يوضح ما هو يوم الأسبوع والشهر والمنطقة الزمنية اليوم
<!-#configtimefmt = اليوم ٪ a ، ٪ b ، المنطقة الزمنية الخادم هي ٪ z ، نعم->
<!-#echo var = date_local->
<!-#configtimefmt = ٪ y سنة/٪ m month d day و week ٪ w beijing الوقت ٪ h: ٪ m: ٪ s ، ٪ y قد مرت ٪ j أيام اليوم هو ٪ u week of y y y year->
<!-#echo var = date_local-> يوضح ما هو يوم الأسبوع والشهر والمنطقة الزمنية اليوم
<!-#configtimefmt = اليوم ٪ a ، ٪ b ، المنطقة الزمنية الخادم هي ٪ z ، نعم->
<!-#echo var = date_local->
XSSI
XSSI (SSI الموسعة) هي مجموعة من تعليمات SSI المتقدمة المضمنة في وحدة Mod-In-Tebure من Apache 1.2 أو أحدث.
من بينها ، التعليمات المتاحة هي:
#printenv
#تعيين
#لو
#printenv
الوظيفة: يعرض جميع متغيرات البيئة الموجودة حاليًا في بيئة خادم الويب.
بناء الجملة: رمز البرنامج:
<!-#printenv->
<!-#printenv->
المعلمات: لا شيء
مثال:
رمز البرنامج:
<!-#printenv->
<!-#printenv->
#تعيين
الوظيفة: يمكنك تعيين قيم للمتغيرات لاستخدامها في البيان اللاحق IF.
بناء الجملة: رمز البرنامج:
<!-#set var = variable name name value = variable value->
<!-#set var = variable name name value = variable value->
المعلمات: لا شيء
مثال: رمز البرنامج:
<!-#set var = colorValue = Red->
<!-#set var = colorValue = Red->
#لو
الوظيفة: قم بإنشاء صفحة يمكنها تغيير البيانات ، والتي يتم عرضها وفقًا لمتطلبات الحساب عند استخدام عبارة IF.
بناء الجملة: رمز البرنامج:
<!-#if expr = $ name variable = value value a->
إظهار المحتوى
<!-#elif expr = $ variable name = Variable Value B->
إظهار المحتوى
<!-#آخر->
إظهار المحتوى
<!-#endif->
<!-#if expr = $ name variable = value value a->
إظهار المحتوى
<!-#elif expr = $ variable name = Variable Value B->
إظهار المحتوى
<!-#آخر->
إظهار المحتوى
<!-#endif->
مثال:
رمز البرنامج:
<!-#if expr = $ server_name = http: //www.31896.net/-->
مرحبًا بكم في منطقة مناقشة أمان الخادم http://www.31896.net/.
<!-#elif expr = $ server_name = http: //www.fineacer.org/->
مرحبًا بك في Qingchang Computer Network Security Online http://www.fineacer.org/.
<!-#آخر->
مرحبًا بك في منطقة مناقشة أمان الخادم!
<!-#endif->
<!-#if expr = $ server_name = http: //www.31896.net/-->
مرحبًا بكم في منطقة مناقشة أمان الخادم http://www.31896.net/.
<!-#elif expr = $ server_name = http: //www.fineacer.org/->
مرحبًا بك في Qingchang Computer Network Security Online http://www.fineacer.org/.
<!-#آخر->
مرحبًا بك في منطقة مناقشة أمان الخادم!
<!-#endif->
ملاحظة: تُستخدم عمليات الرفع الخلفي المستخدمة في التعليمات السابقة لاستبدال عروض الأسعار الداخلية بحيث لا يتم تفسيرها على أنها تعبيرات إنهاء. لم يتم حذفه.
1. أمر التكوين
يستخدم الأمر config بشكل أساسي لتعديل الإعدادات الافتراضية لـ SSI. في:
ERRMSG: اضبط رسالة الخطأ الافتراضية. من أجل إرجاع معلومات الخطأ التي يعينها المستخدم بشكل طبيعي ، يجب وضع معلمة ERRMSG أمام أوامر SSI الأخرى في ملف HTML ، وإلا يمكن للعميل عرض معلومات الخطأ الافتراضية فقط بدلاً من المعلومات المخصصة التي تم تعيينها من قبل المستخدم.
<!-#configerrmsg = خطأ! يرجى إرسال بريد إلكتروني إلى موقع الويب@mydomain.com ->
TimeFMT: يحدد تنسيق الاستخدام من التاريخ والوقت. يجب استخدام المعلمة timeFMT قبل أمر ECHO.
<!-#configtimefmt = ٪ a ، ٪ b ٪ d ، ٪ y->
<!-#echo var = last_modified->
يتم عرض النتائج على النحو التالي:
الأربعاء ، 12 أبريل 2000
ربما يكون المستخدمون غير مألوفين مع ٪ A ٪ B ٪ D المستخدمة في المثال أعلاه. دعنا نلخص بعضًا من تنسيقات التاريخ والوقت الأكثر شيوعًا في SSI في شكل جدول.
SizeFMT: يحدد ما إذا كان حجم الملف يتم التعبير عنه بالبايت أو الكيلوبايت أو ميغابايت. إذا في بايت ، فإن قيمة المعلمة هي بايت ؛ يمكن استخدام الاختصار للكيلوبيت والميجابايت. وبالمثل ، يجب وضع معلمة SizeFMT قبل استخدام الأمر fsize.
<!-#configsizefmt = bytes->
<!-#fsize file = index.html->
2. تشمل الأمر
يمكن أن يقوم الأمر بتضمين إدراج النص أو الصور من مستندات أخرى إلى المستند المحسّن حاليًا ، وهو مفتاح SSI بأكمله. من خلال الأمر ، يجب عليك فقط تغيير ملف واحد لتحديث الموقع بأكمله على الفور!
يتضمن الأمر معلمتان مختلفتان:
افتراضي: يعطي مسارًا افتراضيًا لمستند على جانب الخادم. على سبيل المثال:
<#include virtual =/include/header.html ->
ملف: يعطي المسار النسبي للدليل الحالي ، حيث لا يمكن استخدام ../ ، ولا يمكن استخدام المسار المطلق. على سبيل المثال:
<#include file = header.html ->
هذا يتطلب أن يحتوي كل دليل على ملف header.html.
3. صدى الأمر
يمكن أن يعرض أمر ECHO متغيرات البيئة التالية:
document_name: يعرض اسم المستند الحالي.
<!-#echo var = document_name->
يتم عرض النتائج على النحو التالي:
index.html
document_uri: يعرض المسار الظاهري إلى المستند الحالي. على سبيل المثال:
<!-#echo var = document_uri->
يتم عرض النتائج على النحو التالي:
/yourdirectory/yourfilename.html
مع استمرار نمو الموقع ، ستكون هذه عناوين URL التي تزداد فترة أطول وأطول من الصداع. إذا كنت تستخدم SSI ، فسيتم حل كل شيء. لأنه يمكننا الجمع بين اسم مجال الموقع وأمر SSI لعرض عنوان URL الكامل ، أي:
http: // yourdomain ٪ 3c!-/#echo var = & ... uot ؛ ->
Query_String_Unescaped: يعرض سلسلة الاستعلام التي أرسلها العميل والتي لم يتم هروبها ، مع جميع الشخصيات الخاصة التي تسبقها أحرف الهروب. على سبيل المثال:
<!-#echo var = query_string_unescaped->
DATE_LOCAL: يعرض تاريخ ووقت إعداد المنطقة الزمنية لضبط الخادم. يمكن للمستخدمين تخصيص معلومات الإخراج بناءً على معلمة TimeFMT لأمر التكوين. على سبيل المثال:
<!-#configtimefmt = ٪ a ، ٪ d ٪ b ، في السنة y->
<!-#echo var = date_local->
يتم عرض النتائج على النحو التالي:
السبت 15 أبريل ، في عام 2000
Date_gmt: الوظيفة هي نفسها Date_local ، باستثناء أنها تُرجع تاريخًا بناءً على GMT. على سبيل المثال:
<!-#echo var = date_gmt->
last_modified: يعرض آخر وقت تحديث للوثيقة الحالية. وبالمثل ، هذه ميزة عملية للغاية في SSI. طالما قمت بإضافة النص البسيط التالي إلى مستند HTML ، يمكنك عرض وقت التحديث ديناميكيًا في الصفحة.
<!-#echo var = last_modified->
متغيرات البيئة CGI
بالإضافة إلى متغيرات بيئة SSI ، يمكن لأمر ECHO أيضًا عرض متغيرات بيئة CGI التالية:
Server_software: يعرض اسم ونسخة برنامج الخادم. على سبيل المثال:
<!-#echo var = server_software->
Server_name: يعرض اسم مضيف الخادم أو الاسم المستعار DNS أو عنوان IP. على سبيل المثال:
<!-#echo var = server_name->
Server_protocol: يعرض اسم البروتوكول والنسخة المستخدمة بواسطة طلب العميل ، مثل HTTP/1.0. على سبيل المثال:
<!-#echo var = server_protocol->
Server_port: يعرض منفذ الاستجابة للخادم. على سبيل المثال:
<!-#echo var = server_port->
request_method: يعرض طريقة طلب مستند العميل ، بما في ذلك GET ، HEAD ، و POST. على سبيل المثال:
<!-#echo var = request_method->
Remote_host: يعرض اسم مضيف العميل الذي أصدر رسالة الطلب.
<!-#echo var = remote_host->
REMOTE_ADDR: يعرض عنوان IP للعميل الذي أصدر معلومات الطلب.
<!-#echo var = remote_addr->
Auth_type: يعرض طريقة المصادقة لهوية المستخدم.
<!-#echo var = auth_type->
REMOTE_USER: يعرض اسم الحساب الذي يستخدمه المستخدم للوصول إلى الصفحة المحمية.
<!-#echo var = remote_user->
4. fsize: يعرض حجم الملف المحدد. يمكنك تخصيص تنسيق الإخراج باستخدام معلمة SizeFMT لأمر التكوين.
<!-#fsize file = index_working.html->
5. Flastmod: يعرض تاريخ التعديل الأخير للملف المحدد. يمكنك التحكم في تنسيق الإخراج مع معلمة TREMFMT لأمر التكوين.
<!-#configtimefmt = ٪ a ، ٪ d ٪ b ، في السنة y->
<!-#flastmod file = file.html->
هنا ، يمكننا استخدام معلمة flastmod لعرض تاريخ التحديث لجميع الصفحات المرتبطة على الصفحة. الطريقة كما يلي:
<!-#configtimefmt = ٪ b ٪ d ، ٪ y->
<a href =/directory/file.html> ملف </a>
<!-#flastmod virtual =/directory/file.html->
<a href =/other_directory/other_file.html> ملف آخر </a>
<!-#flastmod virtual =/other_directory/other_file.html->
يتم عرض النتائج على النحو التالي:
ملف 19 أبريل 2000
ملف آخر 08 يناير 2000
6. exec
يمكن لأمر EXEC تنفيذ البرامج النصية CGI أو أوامر shell. كيفية استخدامه على النحو التالي:
CMD: استخدم /bin /sh لتنفيذ السلسلة المحددة. إذا كان SSI يستخدم خيار Consernoexec ، فسيتم حظر الأمر.
CGI: يمكن استخدامها لتنفيذ البرامج النصية CGI. على سبيل المثال ، في المثال التالي ، استخدم برنامج Counter.pl Script ضمن دليل CGI-Bin الخادم لوضع عداد في كل صفحة:
<!-#exec cgi =/cgi-bin/counter.pl->