Server Side Includes

Home

SSI Tutorial
Knowledge Developer Database Internet Resource
SSI Tutorial
1. แนะนำ SSI
2. การคอนฟิกให้แม่ข่ายยอมรับ SSI
3. คำสั่ง SSI พื้นฐาน
4. ตัวอย่างเพิ่มเติม
5. เทคนิค SSI ระดับสูง
6. สรุป
 
Internet
PHP
SSI
HTML
AJAX
 

เทคนิค SSI ระดับสูง

นอกจากการแสดงข้อมูลจากภายนอกแล้ว Apache SSI ให้ทางเลือกของการตั้งค่าตัวแปร และการใช้ตัวแปรเหล่านั้น ในการเปรียบเทียบและเงื่อนไข

ส่วนการทำงานส่วนใหญ่ในบทความนี้มีให้เฉพาะการเรียกใช้ Apache 1.2 หรือต่อมา ดังนั้นถ้าไม่ได้เรียกใช้ Apache 1.2 หรือต่อมาจำเป็นต้องอัพเกรด

การตั้งค่าตัวแปร

คำสั่ง set สามารถใช้ตั้งค่าตัวแปรสำหรับการใช้ต่อไป โดยมีไวบากรณ์ ดังนี้

<!--#set var="name" value="Rich" -->

นอกจากการตั้งค่าตัวแปรแล้วยังสามารถใช้กับตัวแปรอื่น เช่น ตัวแปร environment หรือตัวแปรบางประเภทที่กล่าวถึงต่อไป (เช่น LAST_MODIFIED) เพื่อให้ค่ากับตัวแปร โดยการระบุบางสิ่งเป็นตัวแปรแทนที่ข้อความตามตัวอักษร จากการใช้เครื่องหมายดอลลาร์ ($) หน้าชื่อตัวแปร

<!--#set var="modified" value="$LAST_MODIFIED" -->

การวางเครื่องหมายดอลลาร์กับค่าของตัวแปรจะต้อง escape เครื่องหมายดอลลาร์ด้วย backslash

<!--#set var="cost" value="\$100" -->

ถ้าต้องการวางตัวแปรเรียงกันเป็นข้อความยาวและมีโอกาสที่ชื่อตัวแปรจะกระทบกับตัวอักษรอื่น และมีความสับสนกับตัวอักษรเหล่านั้น ดังนั้นควรวางชื่อตัวแปรในวงเล็บปีกกาเพื่อขจัดความสับสน (เนื่องจากไม่มีตัวอย่างที่ดีแต่หวังว่าจะมีความเข้าใจ)

<!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" -->

นิพจน์เงื่อนไข

ขณะนี้สามารถสร้างตัวแปรได้แล้วทำให้สามารถตั้งค่าเปรียบเทียบตัวแปร จากนั้นสามารถใช้ตัวแปรในนิพจน์เงื่อนไข สิ่งนี้ทำให้ SSI เป็นภาษาโปรแกรมมากขึ้นเล็กน้อย mod_include ให้โครงสร้าง if elif else endif สำหรับการสร้างประโยคคำสั่งเงื่อนไข

โครงสร้างประโยคคำสั่งเงือนไข คือ

<!--#if expr="test_condition" -->
<!--#elif expr="test_condition" -->
<!--#else -->
<!--#endif -->

test_condition สามารถเปรียบเทียบทางตรรกะ ได้แก่ การเปรียบเทียบค่ากับตัวแปรอื่น หรือทดสอบ “ ค่าจริง ” ของค่าเจาะจง (ข้อความเป็นจริง ถ้าไม่เป็นค่าว่าง) สำหรัยรายการ operator เปรียบเทียบทั้งหมดมีให้ในเอกสาร mod_include ต่อไปเป็นตัวอย่างการใช้คำสั่งนี้

ในวางไฟล์คอนฟิกต้องวางคำสั่งต่อไปนี้

BrowserMatchNoCase macintosh Mac
BrowserMatchNoCase MSIE InternetExplorer

คำสั่งนี้ตั้งค่าตัวแปร environment ของ “Mac” และ “InternetExplorer” เป็นจริง ถ้าผู้ใช้กำลังเรียกใช้ Internet Explorer บน Macintosh

จากนั้น ในเอกสาร SSI สามารถทำได้ดังนี้

<!--#if expr="${Mac} && ${InternetExplorer}" -->
Apologetic text goes here
<!--#else -->
Cool JavaScript code goes here
<!--#endif -->

ตัวแปรอื่น (ทั้งตัวแปรกำหนดเอง หรือตัวแปร environment ปกติ) สามารถใช้ในประโยคคำสั่งเงื่อนไข ด้วยความสามารถการตั้งตัวแปร environment ของ Apache ด้วยคำสั่ง SetEnvIf และคำสั่งที่สัมพันธ์กัน จะสามารถทำงานแบบไดนามิคส์โดยปราศจากการใช้ CGI

 


  

สงวนลิขสิทธิ์ (C) widebase / Julaphak