SHTML 教程Word文件下载.docx
《SHTML 教程Word文件下载.docx》由会员分享,可在线阅读,更多相关《SHTML 教程Word文件下载.docx(9页珍藏版)》请在冰豆网上搜索。
#include>
3.显示WEB文档相关信息<
#flastmod#fsize>
(如文件制作日期/大小等)
4.直接执行服务器上的各种程序<
#exec>
(如CGI或其他可执行程序)
5.设置SSI信息显示格式<
#config>
(如文件制作日期/大小显示方式)
高级SSI<
XSSI>
可设置变量使用if条件语句。
使用SSI
SSI是为WEB服务器提供的一套命令,这些命令只要直接嵌入到HTML文档的注释内容之中即可。
如:
<
!
--#includefile="
info.htm"
-->
就是一条SSI指令,其作用是将"
的内容拷贝到当前的页面中,当访问者来浏览时,会看到其它HTML文档一样显示info.htm其中的内容。
其它的SSI指令使用形式基本同刚才的举例差不多,可见SSI使用只是插入一点代码而已,使用形式非常简单。
当然,如果WEB服务器不支持SSI,它就会只不过将它当作注释信息,直接跳过其中的内容;
浏览器也会忽略这些信息。
如何在我的WEB服务器上配置SSI功能?
在一些WEB服务器上(如IIS4.0/SAMBAR4.2),包含#include指令的文件必须使用已被映射到SSI解释程序的扩展名;
否则,Web服务器将不会处理该SSI指令;
默认情况下,扩展名.stm、.shtm和.shtml被映射到解释程序(Ssinc.dll)。
Apache则是根据你的设置情况而定,修改srm.conf如:
AddTypetext/x-server-parsed-html.shtml将只对.shtml扩展名的文件解析SSI指令
AddTypetext/x-server-parsed-html.html将对所有HTML文档解析SSI指令
NetscapeWEB服务器直接使用AdministrationServer(管理服务器)可打开SSI功能。
Website使用ServerAdmin程序中的Mapping标签,扩展名添加内容类型为:
wwwserver/html-ssi
Cern服务器不支持SSI,可用SSI诈骗法,到http:
//sw.cse.bris.ac.uk/WebTools/fakessi.html上下载一个PERL脚本,即可使你的CERN服务器使用一些SSI指令。
(不支持exec指令。
)
SSI指令基本格式
程序代码:
--指令名称="
指令参数"
>
示例:
说明:
1.<
---->
是HTML语法中表示注释,当WEB服务器不支持SSI时,会忽略这些信息。
2.#include为SSI指令之一。
3.file为include的参数,info.htm为参数值,在本指令中指将要包含的文档名。
注意:
--与#号间无空格,只有SSI指令与参数间存在空格。
2.上面的标点="
"
,一个也不能少。
3.SSI指令是大小写敏感的,因此参数必须是小写才会起作用。
SSI指令使用详解
#echo示范
作用:
将环境变量插入到页面中。
语法:
--#echovar="
变量名称"
DOCUMENT_NAME"
本文档名称
DATE_LOCAL"
现在时间
REMOTE_ADDR"
你的IP地址
#include示范
将文本文件的内容直接插入到文档页面中。
文件名称"
--#includevirtual="
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扩展名(这就看你的爱好了)。
将头文件插入到当前页面
nav_foot.htm"
将尾文件插入到当前页面
#flastmod和#fsize示范
#flastmod文件最近更新日期
#fsize文件的长度
--#flastmodfile="
--#fsizefile="
file指定包含文件相对于本文档的位置如info.txt表示当前目录下的的info.txt文档
virtual指定相对于服务器文档根目录的位置如/hoyi/info.txt表示
文件名称必须带有扩展名。
news.htm"
将当前目录下news.htm文件的最近更新日期插插入到当前页面
将当前目录下news.htm的文件大小入到当前页面
#exec示范
将某一外部程序的输出插入到页面中。
可插入CGI程序或者是常规应用程序的输入,这取决于使用的参数是cmd还是cgi。
--#execcmd="
--#execcgi="
cmd常规应用程序
cgiCGI脚本程序
cat/etc/passwd"
将会显示密码文件
dir/b"
将会显示当前目录下文件列表
/cgi-bin/gb.cgi"
将会执行CGI程序gb.cgi。
/cgi-bin/access_log.cgi"
将会执行CGI程序access_log.cgi。
从上面的示例可以看出,这个指令相当方便,但是也存在安全问题。
禁止方法:
1.Apache,将access.conf中的"
OptionsIncludesExecCGI"
这行代码删除;
2.在IIS中,要禁用#exec命令,可修改SSIExecDisable元数据库;
#config
指定返回给客户端浏览器的错误信息、日期和文件大小的格式。
--#configerrmsg="
自定义错误信息"
--#configsizefmt="
显示单位"
--#configtimefmt="
显示格式"
errmsg自定义SSI执行错误信息,可以为任何你喜欢的方式。
sizefmt文件大小显示方式,默认为字节方式("
bytes"
)可以改为千字节方式("
abbrev"
timefmt时间显示方式,最灵活的配置属性。
显示一个不存在文件的大小
服务器执行错误,请联系管理员yiho@,谢谢!
不存在的文件.htm"
以千字节方式显示文件大小
--#fsizefile="
以特定的时间格式显示时间
%Y年/%m月%d日星期%W北京时间%H:
%M:
%s,%Y年已过去了%j天今天是%Y年的第%U个星期"
显示今天是星期几,几月,时区
今天%A,%B,服务器时区是%z,是"
XSSI
XSSI(ExtendedSSI)是一组高级SSI指令,内置于Apache1.2或更高版本的mod-include模块之中。
其中可利用的的指令有:
#printenv
#set
#if
显示当前存在于WEB服务器环境中的所有环境变量。
--#printenv-->
可给变量赋值,以用于后面的if语句。
--#setvar="
变量名"
value="
变量值"
color"
红色"
创建可以改变数据的页面,这些数据根据使用if语句时计算的要求予以显示。
--#ifexpr="
$变量名=\"
变量值A\"
显示内容
--#elifexpr="
变量值B\"
--#else-->
--#endif"
$SERVER_NAME=\"
\"
欢迎光临
-->
欢迎光临Afly'
sBlog!
用于前面指令中的反斜杠,是用来代换内部的引号,以便它们不会被解释为结束表达式。
不可省略。
1、Config命令
Config命令主要用于修改SSI的默认设置。
其中:
Errmsg:
设置默认错误信息。
为了能够正常的返回用户设定的错误信息,在HTML文件中Errmsg参数必须被放置在其它SSI命令的前面,否则客户端只能显示默认的错误信息,而不是由用户设定的自定义信息。
Error!
Pleaseemailwebmaster@"
Timefmt:
定义日期和时间的使用格式。
Timefmt参数必须在echo命令之前使用。
%A,%B%d,%Y"
LAST_MODIFIED"
显示结果为:
Wednesday,April12,2000
也许用户对上例中所使用的%A%B%d感到很陌生,下面我们就以表格的形式总结一下SSI中较为常用的一些日期和时间格式。
Sizefmt:
决定文件大小是以字节、千字节还是兆字节为单位表示。
如果以字节为单位,参数值为"
;
对于千字节和兆字节可以使用缩写形式。
同样,sizefmt参数必须放在fsize命令的前面才能使用。
index.html"
2、Include命令
Include命令可以把其它文档中的文字或图片插入到当前被解析的文档中,这是整个SSI的关键所在。
通过Include命令只需要改动一个文件就可以瞬间更新整个站点!
Include命令具有两个不同的参数:
Virtual:
给出到服务器端某个文档的虚拟路径。
File:
给出到当前目录的相对路径,其中不能使用"
../"
,也不能使用绝对路径。
/includes/header.html"
header.html"
这就要求每一个目录中都包含一个header.html文件。
3、Echo命令
Echo命令可以显示以下各环境变量:
DOCUMENT_NAME:
显示当前文档的名称。
DOCUMENT_URI:
显示当前文档的虚拟路径。
例如:
DOCUMENT_URI"
随着网站的不断发展,那些越来越长的URL地址肯定会让人头疼。
如果使用SSI,一切就会迎刃而解。
因为我们可以把网站的域名和SSI命令结合在一起显示完整的URL,即:
http:
//YourDomain<
QUERY_STRING_UNESCAPED:
显示未经转义处理的由客户端发送的查询字串,其中所有的特殊字符前面都有转义符"
QUERY_STRING_UNESCAPED"
DATE_LOCAL:
显示服务器设定时区的日期和时间。
用户可以结合config命令的timefmt参数,定制输出信息。
%A,the%dof%B,intheyear%Y"
Saturday,the15ofApril,intheyear2000
DATE_GMT:
功能与DATE_LOCAL一样,只不过返回的是以格林尼治标准时间为基准的日期。
DATE_GMT"
LAST_MODIFIED:
显示当前文档的最后更新时间。
同样,这是SSI中非常实用的一个功能,只要在HTML文档中加入以下这行简单的文字,就可以在页面上动态的显示更新时间。
CGI环境变量
除了SSI环境变量之外,echo命令还可以显示以下CGI环境变量:
SERVER_SOFTWARE:
显示服务器软件的名称和版本。
SERVER_SOFTWARE"
SERVER_NAME:
显示服务器的主机名称,DNS别名或IP地址。
SERVER_NAME"
SERVER_PROTOCOL:
显示客户端请求所使用的协议名称和版本,如HTTP/1.0。
SERVER_PROTOCOL"
SERVER_PORT:
显示服务器的响应端口。
SERVER_PORT"
REQUEST_METHOD:
显示客户端的文档请求方法,包括GET,HEAD,和POST。
REQUEST_METHOD"
REMOTE_HOST:
显示发出请求信息的客户端主机名称。
REMOTE_HOST"
REMOTE_ADDR:
显示发出请求信息的客户端IP地址。
AUTH_TYPE:
显示用户身份的验证方法。
AUTH_TYPE"
REMOTE_USER:
显示访问受保护页面的用户所使用的帐号名称。
REMOTE_USER"
4、Fsize:
显示指定文件的大小,可以结合config命令的sizefmt参数定制输出格式。
index_working.html"
5、Flastmod:
显示指定文件的最后修改日期,可以结合config命令的timefmt参数控制输出格式。
file.html"
这里,我们可以利用flastmod参数显示出一个页面上所有链接页面的更新日期。
方法如下:
%B%d,%Y"
AHREF="
/directory/file.html"
File<
/A>
--#flastmodvirtual="
/another_directory/another_file.html"
AnotherFile<
FileApril19,2000
AnotherFileJanuary08,2000
6、Exec
Exec命令可以执行CGI脚本或者shell命令。
使用方法如下:
Cmd:
使用/bin/sh执行指定的字串。
如果SSI使用了IncludesNOEXEC选项,则该命令将被屏蔽。
Cgi:
可以用来执行CGI脚本。
例如,下面这个例子中使用服务端cgi-bin目录下的counter.pl脚本程序在每个页面放置一个计数器:
/cgi-bin/counter.pl"
关于SHTML和HTML的区别
让我们先来看看SHTML和HTML的区别,如果用一句话来解释就是:
SHTML不是HTML而是一种服务器API,shtml是服务器动态产成的html.
虽然两者都是超文本格式,但shtml是一种用于SSI技术的文件。
也就是ServerSideInclude--SSI服务器端包含指令。
如果WebServer有SSI功能的话,大多数(尤其是基于Unix平台)的WEB服务器,如NetscapeEnterpriseServer等均支持SSI命令。