SHTML y ASP son similares. En archivos que llevan el nombre de SHTML, se utilizan algunas instrucciones SSI, al igual que las instrucciones en ASP. Puede escribir instrucciones SSI en el archivo SHTML. Cuando el cliente accede a estos archivos SHTML,
El lado del servidor leerá e interpretará estos archivos SHTML e interpretará las instrucciones SSI contenidas en el archivo SHTML. Por ejemplo: puede usar instrucciones SSI para consultar otros archivos HTML (#include) en el archivo shtml. El archivo enviado por el servidor al cliente es que el SHTML ya explicado no tiene instrucciones SSI. Implementa funciones que HTML no tiene, es decir, puede implementar dinámicas
Se puede decir que SHTML es una evolución de HTML. Al igual que el sistema de noticias de Sina, el contenido de noticias es arreglado, pero los anuncios y los menús en él se citan en #include.
Actualmente, hay principalmente los siguientes usos:
1. Mostrar variables de entorno del lado del servidor <#echo>
2. Inserte el contenido de texto directamente en el documento <#include>
3. Muestre información relacionada con el documento web <#flastmod> <#fsize> (como la fecha/tamaño de creación de archivos, etc.)
4. Ejecutar directamente varios programas en el servidor <#Exec> (como CGI u otros programas ejecutables)
5. Establezca el formato de visualización de información SSI <#config> (como la fecha de creación de archivos/Método de visualización de tamaño)
SSI avanzado <xssi> puede establecer variables para usar las declaraciones condicionales IF.
Usando SSI
SSI es un conjunto de comandos proporcionados para servidores web. Estos comandos solo están integrados directamente en el contenido de comentarios del documento HTML. como:
<#include file = info.htm->
Es una directiva SSI, que se utiliza para copiar el contenido de info.htm a la página actual. Cuando el visitante navegue, verá que otros documentos HTML muestran el contenido de info.htm.
Las formas de uso de otras instrucciones de SSI son básicamente las mismas que las mencionadas en este momento. Se puede ver que el uso de SSI solo está insertando un pequeño código, y los formularios de uso son muy simples.
Por supuesto, si el servidor web no admite SSI, simplemente lo tratará como información de anotación y omitirá el contenido directamente; El navegador también ignorará esta información.
¿Cómo configurar la funcionalidad SSI en mi servidor web?
En algunos servidores web (como IIS 4.0/Sambar 4.2), los archivos que contienen la Directiva #Clude deben usar una extensión que se haya asignado al intérprete SSI; De lo contrario, el servidor web no procesará la Directiva SSI; Por defecto, las extensiones .stm, .shtm y .shtml se asignan al intérprete (ssinc.dll).
Apache se basa en su configuración, modifique srm.conf como:
AddType Text/X-Server-Parsed-HTML .Shtml analizará las directivas SSI solo para archivos con extensión .shtml
AddType Text/X-Server-Parsed-HTML .html analizará las directivas SSI para todos los documentos HTML
Netscape Web Server puede usar directamente el servidor de administración (servidor administrativo) para habilitar la función SSI.
El sitio web utiliza la etiqueta de mapeo en el programa de administración del servidor y agrega el tipo de contenido como: wwwserver/html-ssi
El servidor CERN no admite SSI. Puede usar el método de estafa SSI. Descargue un script Perl en http://sw.cse.bris.ac.uk/webitools/fakessi.html para que su servidor CERN use algunas instrucciones SSI. (La Directiva EXEC no es compatible).
Formato básico de instrucción SSI
Formato básico de instrucción SSI:
Código de programa:
<! ---- Nombre de instrucción = Parámetros de instrucción>
<! ---- Nombre de instrucción = Parámetros de instrucción>
como
Código de programa:
<#include file = info.htm->
<#include file = info.htm->
ilustrar:
1. <!--> es anotación en la sintaxis HTML. Esta información será ignorada cuando el servidor web no admite SSI.
2. #Include es una de las directivas SSI.
3. El archivo es el parámetro de incluir, info.htm es el valor del parámetro y se refiere al nombre del documento que se incluirá en esta instrucción.
Aviso:
1. <!-No hay espacio entre el número #, solo existen las instrucciones y parámetros SSI.
2. La puntuación anterior =, nadie puede faltar.
3. Las instrucciones de SSI son sensibles a las minas, por lo que los parámetros deben ser en minúsculas para funcionar.
Explicación detallada del uso de instrucciones SSI
#demostración de tecnología
efecto:
Inserte las variables de entorno en la página.
gramática:
Código de programa:
<!-#echo var = nombre variable->
<!-#echo var = nombre variable->
Nombre de este documento: Código del programa:
<!-#echo var = document_name->
<!-#echo var = document_name->
Hora actual: Código de programa:
<!-#echo var = date_local->
<!-#echo var = date_local->
Su dirección IP es el código del programa:
<!-#echo var = remote_addr->
<!-#echo var = remote_addr->
#Demostración de incluido
efecto:
Inserte el contenido del archivo de texto directamente en la página del documento.
gramática:
Código de programa:
<#include file = nombre de archivo->
<#include virtual = nombre de archivo->
<#include file = nombre de archivo->
<#include virtual = nombre de archivo->
El nombre del archivo del archivo es una ruta relativa en relación con el directorio donde se encuentra el documento que usa la Directiva #Clude. Los archivos incluidos pueden estar en el mismo directorio de nivel o en sus subdirectorios, pero no en el directorio de nivel anterior. Si el documento nav_head.htm en el directorio actual es file = nav_head.htm.
El nombre del archivo virtual es la ruta completa al directorio virtual en el sitio web. Si significa el archivo nav_head.htm en el directorio Hoyi en el directorio raíz del documento del servidor; Entonces es file =/Hoyi/Nav_head.htm
parámetro:
El archivo especifica la ubicación del archivo que contiene en relación con este documento
Virtual especifica la ubicación relativa al directorio raíz del documento del servidor
Aviso:
1. El nombre del archivo debe tener una extensión.
2. Los archivos incluidos pueden tener cualquier extensión de archivo. Creo que es más conveniente usar la extensión HTM directamente. Microsoft recomienda usar la extensión .inc (depende de su pasatiempo).
Ejemplo:
Código de programa:
<#include file = nav_head.htm-> Inserte el archivo de encabezado en la página actual
<#include file = nav_foot.htm-> Inserte el archivo de cola en la página actual
<#include file = nav_head.htm-> Inserte el archivo de encabezado en la página actual
<#include file = nav_foot.htm-> Inserte el archivo de cola en la página actual
#flastmod y #fsize demostraciones
Función: Fecha de actualización #FLASTMOD #FLASTMOD Fecha de actualización
#Fsize Longitud del archivo
gramática:
Código de programa:
<!-#FLASTMOD FILE = Nombre del archivo->
<!-#fsize archivo = nombre de archivo->
<!-#FLASTMOD FILE = Nombre del archivo->
<!-#fsize archivo = nombre de archivo->
parámetro:
El archivo especifica la ubicación del archivo contenedor en relación con este documento, como Info.txt, que representa el documento info.txt en el directorio actual.
Virtual especifica la ubicación relativa al directorio raíz del documento del servidor, como /hoyi/info.txt
Aviso:
El nombre del archivo debe tener una extensión.
Ejemplo:
Código de programa:
<!-#FLASTMOD FILE = News.htm->
<!-#FLASTMOD FILE = News.htm->
Inserte la última fecha de actualización del archivo News.htm en el directorio actual en la página actual
Código de programa:
<!-#fsize file = news.htm->
<!-#fsize file = news.htm->
Ingrese el tamaño del archivo de News.htm en el directorio actual en la página actual
demostración #exec
efecto:
Inserte la salida de un programa externo en la página. Se puede insertar en programas CGI o entrada de una aplicación regular, dependiendo de si los parámetros utilizados son CMD o CGI.
gramática:
Código de programa:
<!-#ejecut cmd = nombre de archivo->
<!-#exec cgi = nombre de archivo->
<!-#ejecut cmd = nombre de archivo->
<!-#exec cgi = nombre de archivo->
parámetro:
Aplicaciones regulares de CMD
Programa de script CGI CGI
Ejemplo:
Código de programa:
<!-#exec cmd = cat /etc /passwd-> mostrará el archivo de contraseña
<!-#exec cmd = dir /b-> mostrará la lista de archivos en el directorio actual
<!-#exec cgi =/cgi-bin/gb.cgi-> se ejecutará el programa CGI GB.CGI.
<!-#exec cgi =/cgi-bin/access_log.cgi-> El programa CGI access_log.cgi se ejecutará.
<!-#exec cmd = cat /etc /passwd-> mostrará el archivo de contraseña
<!-#exec cmd = dir /b-> mostrará la lista de archivos en el directorio actual
<!-#exec cgi =/cgi-bin/gb.cgi-> se ejecutará el programa CGI GB.CGI.
<!-#exec cgi =/cgi-bin/access_log.cgi-> El programa CGI access_log.cgi se ejecutará.
Aviso:
Como se puede ver en el ejemplo anterior, esta instrucción es bastante conveniente, pero también hay problemas de seguridad.
Método prohibido:
. Apache, eliminar las opciones incluye la línea execcgi en access.conf;
. En IIS, para deshabilitar el comando #Exec, puede modificar la metadatabase ssiexecdisable;
#config
Función: especifica el formato del mensaje de error, la fecha y el tamaño del archivo devuelto al navegador del cliente.
gramática:
Código de programa:
<!-#configErRmsg = mensaje de error personalizado->
<!-#configSizefmt = Unidad de visualización->
<!-#configTimefmt = formato de visualización->
<!-#configErRmsg = mensaje de error personalizado->
<!-#configSizefmt = Unidad de visualización->
<!-#configTimefmt = formato de visualización->
parámetro:
Los mensajes de error de ejecución SSI Custom SSI de ERRMSG se pueden usar de cualquier manera que desee.
Método de visualización de tamaño de archivo sizefmt, predeterminado es el método de byte (bytes) se puede cambiar a kilobyte método (abrev)
Método de visualización de tiempo TimeFmt, el atributo de configuración más flexible.
Ejemplo: muestra el tamaño de un archivo que no existe
Código de programa:
<!-#configErRmsg = error de ejecución del servidor, comuníquese con el administrador [email protected], ¡gracias! ->
<!-#fsize file = no file.htm->
<!-#configErRmsg = error de ejecución del servidor, comuníquese con el administrador [email protected], ¡gracias! ->
<!-#fsize file = no file.htm->
Mostrar el tamaño del archivo en kilobytes
Código de programa:
<!-#configSizefmt = abreverano->
<!-#fsizefile = news.htm->
<!-#configSizefmt = abreverano->
<!-#fsizefile = news.htm->
Mostrar tiempo en un formato de tiempo específico
Código de programa:
<!-#configTimefmt = %y año/ %m mes %d día y semana %w beijing tiempo %h: %m: %s, %y año ha pasado %j días hoy es el %u semana de %y año->>
<!-#echo var = date_local-> muestra qué día de semana, mes y zona horaria es hoy
<!-#configTimefmt = %A, %B, la zona horaria del servidor es %Z, sí->
<!-#echo var = date_local->
<!-#configTimefmt = %y año/ %m mes %d día y semana %w beijing tiempo %h: %m: %s, %y año ha pasado %j días hoy es el %u semana de %y año->>
<!-#echo var = date_local-> muestra qué día de semana, mes y zona horaria es hoy
<!-#configTimefmt = %A, %B, la zona horaria del servidor es %Z, sí->
<!-#echo var = date_local->
Xssi
XSSI (SSI extendido) es un conjunto de instrucciones SSI avanzadas integradas en el módulo de incluido modificado de Apache 1.2 o posterior.
Entre ellos, las instrucciones disponibles son:
#Printenv
#colocar
#si
#Printenv
Función: muestra todas las variables de entorno actualmente presentes en el entorno del servidor web.
Sintaxis: código de programa:
<!-#printenv->
<!-#printenv->
Parámetros: ninguno
Ejemplo:
Código de programa:
<!-#printenv->
<!-#printenv->
#colocar
Función: puede asignar valores a variables que se utilizarán en la declaración IF posterior.
Sintaxis: código de programa:
<!-#set var = variable nombre de nombre = valor variable->
<!-#set var = variable nombre de nombre = valor variable->
Parámetros: ninguno
Ejemplo: Código de programa:
<!-#set var = colorvalue = rojo->
<!-#set var = colorvalue = rojo->
#si
Función: cree una página que pueda cambiar los datos, que se muestran de acuerdo con los requisitos de cálculo al usar la instrucción IF.
Sintaxis: código de programa:
<!-#if expr = $ variable nombre = valor variable a->
Mostrar contenido
<!-#elif expr = $ variable name = valor variable b->
Mostrar contenido
<!-#else->
Mostrar contenido
<!-#endif->
<!-#if expr = $ variable nombre = valor variable a->
Mostrar contenido
<!-#elif expr = $ variable name = valor variable b->
Mostrar contenido
<!-#else->
Mostrar contenido
<!-#endif->
Ejemplo:
Código de programa:
<!-#if expr = $ server_name = http: //www.31896.net/->
Bienvenido al área de discusión de seguridad del servidor http://www.31896.net/.
<!-#elif expr = $ server_name = http: //www.fineacer.org/->
Bienvenido a QingChang Computer Network Security en línea http://www.fineaper.org/.
<!-#else->
¡Bienvenido al área de discusión de seguridad del servidor!
<!-#endif->
<!-#if expr = $ server_name = http: //www.31896.net/->
Bienvenido al área de discusión de seguridad del servidor http://www.31896.net/.
<!-#elif expr = $ server_name = http: //www.fineacer.org/->
Bienvenido a QingChang Computer Network Security en línea http://www.fineaper.org/.
<!-#else->
¡Bienvenido al área de discusión de seguridad del servidor!
<!-#endif->
Nota: Las barras de retroceso utilizadas en las instrucciones anteriores se utilizan para reemplazar las citas internas para que no se interpreten como expresiones finales. No omitido.
1. Comando de configuración
El comando de configuración se usa principalmente para modificar la configuración predeterminada de SSI. en:
ERRMSG: Establezca el mensaje de error predeterminado. Para devolver la información de error establecida por el usuario normalmente, el parámetro ERRMSG debe colocarse frente a otros comandos SSI en el archivo HTML, de lo contrario, el cliente solo puede mostrar la información de error predeterminada en lugar de la información personalizada establecida por el usuario.
<!-#configErrmsg = error! Envíe un correo electrónico a [email protected] ->
TimeFmt: Define el formato de uso de la fecha y la hora. El parámetro TIMEFMT debe usarse antes del comando ECHO.
<!-#configTimefmt = %a, %b %d, %y->
<!-#echo var = last_modified->
Los resultados se muestran como:
Miércoles 12 de abril de 2000
Quizás los usuarios no están familiarizados con el %A %b %D utilizado en el ejemplo anterior. Resumamos algunos de los formatos de fecha y hora más utilizados en SSI en forma de tabla.
SizeFMT: determina si el tamaño del archivo se expresa en bytes, kilobytes o megabytes. Si está en bytes, el valor del parámetro es bytes; La abreviatura se puede usar para kilobytes y megabytes. Del mismo modo, el parámetro sizefmt debe colocarse antes del comando fsize que se utilizará.
<!-#configSizefmt = bytes->
<!-#fsize file = index.html->
2. Incluir comando
El comando incluir puede insertar texto o imágenes de otros documentos en el documento analizado actualmente, que es la clave para todo el SSI. ¡A través del comando incluir, solo necesita cambiar un archivo para actualizar todo el sitio al instante!
El comando incluir tiene dos parámetros diferentes:
Virtual: da una ruta virtual a un documento en el lado del servidor. Por ejemplo:
<#include virtual =/incluido/header.html ->
Archivo: Da la ruta relativa al directorio actual, donde ../ no se puede usar, ni se puede usar la ruta absoluta. Por ejemplo:
<#include file = header.html ->
Esto requiere que cada directorio contenga un archivo de encabezado.html.
3. Comando de eco
El comando echo puede mostrar las siguientes variables de entorno:
Document_name: muestra el nombre del documento actual.
<!-#echo var = document_name->
Los resultados se muestran como:
index.html
Document_uri: muestra la ruta virtual al documento actual. Por ejemplo:
<!-#echo var = document_uri->
Los resultados se muestran como:
/YourDirectory/yourfilename.html
A medida que el sitio web continúa creciendo, esas URL que se están volviendo cada vez más largas definitivamente serán un dolor de cabeza. Si usa SSI, todo se resolverá. Debido a que podemos combinar el nombre de dominio del sitio web y el comando SSI para mostrar la URL completa, es decir:
http: // yourdomain%3c!-/#eco var = & ... uot; ->
QUERY_STRING_UNESCAPED: Muestra la cadena de consulta enviada por el cliente que no ha sido escapada, con todos los caracteres especiales precedidos por los caracteres de escape. Por ejemplo:
<!-#echo var = query_string_unescaped->
Date_local: muestra la fecha y hora de la zona horaria de configuración del servidor. Los usuarios pueden personalizar la información de salida en función del parámetro TimeFmt del comando config. Por ejemplo:
<!-#configTimefmt = %A, el %d de %b, en el año %y->
<!-#echo var = date_local->
Los resultados se muestran como:
Sábado, el 15 de abril, en el año 2000
Date_gmt: la función es la misma que date_local, excepto que devuelve una fecha basada en GMT. Por ejemplo:
<!-#echo var = date_gmt->
Last_modified: muestra el último tiempo de actualización del documento actual. Del mismo modo, esta es una característica muy práctica en SSI. Siempre que agregue el siguiente texto simple al documento HTML, puede mostrar dinámicamente el tiempo de actualización en la página.
<!-#echo var = last_modified->
Variables de entorno CGI
Además de las variables de entorno SSI, el comando ECHO también puede mostrar las siguientes variables de entorno CGI:
Server_software: muestra el nombre y la versión del software del servidor. Por ejemplo:
<!-#echo var = server_software->
Server_name: muestra el nombre de host del servidor, el alias DNS o la dirección IP. Por ejemplo:
<!-#echo var = server_name->
Server_protocol: muestra el nombre y la versión del protocolo utilizada por la solicitud del cliente, como HTTP/1.0. Por ejemplo:
<!-#echo var = server_protocol->
Server_port: muestra el puerto de respuesta del servidor. Por ejemplo:
<!-#eco var = server_port->
Request_method: muestra el método de solicitud de documento del cliente, incluidos Get, Head y Post. Por ejemplo:
<!-#eco var = request_method->
Remote_host: muestra el nombre del host del cliente que emitió el mensaje de solicitud.
<!-#echo var = remote_host->
Remote_addr: muestra la dirección IP del cliente que emitió la información de solicitud.
<!-#echo var = remote_addr->
Auth_type: muestra el método de autenticación de identidad del usuario.
<!-#echo var = auth_type->
Remote_user: muestra el nombre de la cuenta utilizado por el usuario que accede a la página protegida.
<!-#echo var = remote_user->
4. FSIZE: Muestra el tamaño del archivo especificado. Puede personalizar el formato de salida con el parámetro sizefmt del comando config.
<!-#fsize file = index_working.html->
5. Flastmod: muestra la última fecha de modificación del archivo especificado. Puede controlar el formato de salida con el parámetro TIMEFMT del comando de configuración.
<!-#configTimefmt = %A, el %d de %b, en el año %y->
<!-#flastmod file = file.html->
Aquí, podemos usar el parámetro FlastMod para mostrar la fecha de actualización de todas las páginas vinculadas en una página. El método es el siguiente:
<!-#configTimefmt = %b %d, %y->
<A href =/directorio/file.html> archivo </a>
<!-#flastmod virtual =/directorio/file.html->
<A href =/other_directory/other_file.html> otro archivo </a>
<!-#flastmod virtual =/other_directory/other_file.html->
Los resultados se muestran como:
Archivo 19 de abril de 2000
Otro archivo 08 de enero de 2000
6. Exec
El comando EXEC puede ejecutar scripts CGI o comandos de shell. Cómo usarlo es el siguiente:
CMD: use /bin /sh para ejecutar la cadena especificada. Si SSI usa la opción INCENDERNOEXEC, el comando se bloqueará.
CGI: se puede usar para ejecutar scripts CGI. Por ejemplo, en el siguiente ejemplo, use el programa de script Counter.PL en el directorio CGI-bin del servidor para colocar un contador en cada página:
<!-#exec cgi =/cgi-bin/contador.pl->