首頁  >  文章  >  web前端  >  shtml精簡教學讓你知道什麼是shtml_基礎教學

shtml精簡教學讓你知道什麼是shtml_基礎教學

WBOY
WBOY原創
2016-05-16 12:08:551526瀏覽

目前,主要有以下几种用用途:   
1、显示服务器端环境变量   
2、将文本内容直接插入到文档中   
3、显示WEB文档相关信息(如文件制作日期/大小等)   
4、直接执行服务器上的各种程序(如CGI或其他可执行程序)   
5、设置SSI信息显示格式(如文件制作日期/大小显示方式)   高级SSI可设置变量使用if条件语句。   
SSI有什么用? 之所以要扯到ssi,是因爲shtml--server-parsed HTML 的首字母缩略词。包含有嵌入式服务器方包含命令的 HTML 文本。在被传送给浏览器之前,服务器会对 SHTML 文档进行完全地读取、分析以及修改。 
shtml和asp 有一些相似,以shtml命名的文件里,使用了ssi的一些指令,就像asp中的指令,你可以在SHTML文件中写入SSI指令,当客户端访问这些shtml文件时, 
服务器端会把这些SHTML文件进行读取和解释,把SHTML文件中包含的SSI指令解释出来比如:你可以在SHTML文件中用SSI指令引用其他的 html文件(#include ),服务器传送给客户端的文件,是已经解释的SHTML不会有SSI指令。它实现了HTML所没有的功能,就是可以实现了动态 
的SHTML,可以说是HTML的一种进化吧。像新浪的新闻系统就是这样的,新闻内容是固定的但它上面的广告和菜单等就是用#include引用进来的。 
  目前,主要有以下几种用用途: 
  1、显示服务器端环境变量 
  2、将文本内容直接插入到文档中 
  3、显示WEB文档相关信息(如文件制作日期/大小等) 
  4、直接执行服务器上的各种程序(如CGI或其他可执行程序) 
  5、设置SSI信息显示格式(如文件制作日期/大小显示方式) 
  高级SSI可设置变量使用if条件语句。 
  
使用SSI 
  SSI是为WEB服务器提供的一套命令,这些命令只要直接嵌入到HTML文档的注释内容之中即可。如: 
   
  就是一条SSI指令,其作用是将"info.htm"的内容拷贝到当前的页面中,当访问者来浏览时,会看到其它HTML文档一样显示info.htm其中的内容。 
  其它的SSI指令使用形式基本同刚才的举例差不多,可见SSI使用只是插入一点代码而已,使用形式非常简单。 
  当然,如果WEB服务器不支持SSI,它就会只不过将它当作注释信息,直接跳过其中的内容;浏览器也会忽略这些信息。 
  
如何在我的WEB伺服器上設定SSI功能?
  在某些WEB伺服器上(如IIS 4.0/SAMBAR 4.2),包含 #include 指令的檔案必須使用已被對應到 SSI 解釋程式的副檔名;否則,Web 伺服器將不會處理該SSI指令;預設值下,副檔名 .stm、.shtm 和 .shtml 被對應到解釋程式(Ssinc.dll)。
  Apache則是根據你的設定情況而定,修改srm.conf如: 
  AddType text/x-server-parsed-html .shtml 將只對.shtml副檔名的檔案解析SSI 
AddType text/x-server-parsed-html .html將對所有HTML文件解析SSI指令 
  Netscape WEB伺服器直接使用Administration Server(管理伺服器)可開啟SSI功能。
  Website使用Server Admin程式中的Mapping標籤,副檔名新增內容類型為:wwwserver/html-ssi 
  Cern伺服器不支援SSI,可用SSI詐騙法,到http://sw.cse.bris. ac.uk/WebTools/fakessi.html 上下載一個PERL腳本,即可讓你的CERN伺服器使用一些SSI指令。 (不支援exec指令。) 
  
SSI指令基本格式 
SSI指令基本格式: 
程式碼: 
 

如 
#如 
#程式碼: 
 
 
說明:  1.
是HTML語法中表示註釋,當WEB伺服器不支援SSI時,會忽略這些資訊。 
2. #include 為SSI指令之一。 
3. file 為include的參數, info.htm為參數值,本指令中指將要包含的文件名稱。 
注意: 
 
 

本文檔名稱:程式碼: 
 
#  ## #現在時間:程式碼: 
 
 
你的IP位址是程式碼: 
 
 
##include 示範  ## #作用: 
將文字檔案的內容直接插入文件頁中。
語法: 
程式碼: 
 
 
 
 
file 檔案名稱是相對路徑,路徑相對於使用 #include 指令的文件所在的目錄。被包含檔案可以在同一層級目錄或其子目錄中,但不能在上一層目錄中。如表示目前目錄下的nav_head.htm文檔,則為file="nav_head.htm"。 
virtual 檔案名稱是 Web 網站上的虛擬目錄的完整路徑。如表示相對於伺服器文件根目錄下hoyi目錄下的nav_head.htm檔案;則為file="/hoyi/nav_head.htm" 
參數: 
file 指定包含檔案相對於本文檔的位置  ## #virtual 指定相對於伺服器文件根目錄的位置 
注意: 
1、檔案名稱必須有副檔名。 
2、被包含的檔案可以有任何檔案副檔名,我覺得直接使用htm副檔名最方便,微軟公司推薦使用 .inc 副檔名(這就看你的愛好了)。
範例: 
程式碼: 

將頭檔插入到目前頁面 
將尾檔插入到目前頁面 
將頭檔插入目前頁面
將尾檔插入目前頁面  #flastmod 與#fsize 示範 
功能: #flastmod 檔案最近更新日期 
#fsize 檔案的長度 
程式: 
程式代碼: 

 
 
 
  參數: 
file 指定包含檔案相對於本文檔的位置 如 info.txt 表示目前目錄下的的info.txt文件 
virtual 指定相對於伺服器文件根目錄的位置 如 /hoyi/info.txt 表示 
注意: 
檔案名稱必須有副檔名。
範例: 
程式碼: 

 
  將目前目錄下news.htm檔案的最近更新日期插入到目前頁面 
程式碼:  #
## 
 
將目前目錄下news.htm的檔案大小入到目前頁面    
#exec 示範 
作用: 
將某一外部程式的輸出插入到頁面中。可插入CGI程式或常規應用程式的輸入,這取決於使用的​​參數是cmd還是cgi。
語法: 
程式碼: 
 
 
 
 
參數: 
#cmd 常規應用程式 
cgi CGI腳本程式 
範例: 
程式碼: 
將會顯示密碼檔案 
會顯示目前目錄下檔案清單 
#將會執行CGI程序gb.cgi。 
將會執行CGI程式access_log.cgi。 
將會顯示密碼檔 
將會顯示目前目錄下檔案清單 
將會執行CGI程式gb.cgi。 
將會執行CGI程式access_log.cgi。 
注意: 
從上面的範例可以看出,這個指令相當方便,但是也有安全問題。 
禁止方法: 
. Apache,刪除access.conf中的"Options Includes ExecCGI"這行程式碼刪除; 
.在IIS中,若要停用 #exec 指令,可修改 SSIExecDisable 元資料庫; 

#config 
作用: 指定傳回給用戶端瀏覽器的錯誤訊息、日期和檔案大小的格式。
語法: 
程式碼: 
## 
 
 
 
 
  參數: 
errmsg 自訂SSI執行錯誤訊息,可以為任何你喜歡的方式。 
sizefmt 檔案大小顯示方式,預設為位元組方式("bytes")可以改為千位元組方式("abbrev") 
timefmt 時間顯示方式,最靈活的設定屬性。
範例: 顯示一個不存在檔案的大小 
程式碼: 
 
 
 
 
以千位元組方式顯示檔案大小 
程式碼: 
 
 
 
 
以特定的時間格式顯示時間 
程式碼:  #
## 
 顯示今天是星期幾,幾月,時區 
 
 
 
# 顯示今天是星期幾,幾月,時區 
 
  XSSI 
XSSI(Extended SSI)是一組進階SSI指令,內建於Apache 1.2或更高版本的mod-include模組之中。 
其中可用的指令有: 
#printenv 
#set 
#if 
#printenv 
作用: 顯示目前存在於WEB伺服器環境中的所有環境變數。
語法:程式碼: 

 
參數:無 
範例: 
程式碼: 
## 
  #
set

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn