เทคนิค 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
|