SSI (programación)

SSI ( Inclusiones del lado del servidor : inclusiones en el lado del servidor) es un lenguaje simple para "ensamblar" dinámicamente páginas web en el servidor a partir de componentes separados y enviar el documento HTML resultante al cliente. Implementado en el servidor web Apache usando el módulo mod_include . Habilitado en la configuración predeterminada del servidor web, la capacidad de incluir archivos HTML, por lo que para usar las instrucciones, el archivo debe terminar con la extensión .shtml , .stmo.shtm

Hay que recordar que algunos servicios no ejecutan comandos SSI si la extensión del archivo es diferente a la anterior, por ejemplo, .html.

La sintaxis SSI le permite incluir otras páginas SSI en el texto de la página, llamar a scripts CGI externos , implementar operaciones condicionales (si / si no), trabajar con variables, etc. Debido a la extrema simplicidad del lenguaje, ensamblar páginas SSI es muy rápido, sin embargo, muchas de las posibilidades de los lenguajes de programación completos, por ejemplo, trabajar con archivos, están ausentes en SSI.

Algunos elementos de la sintaxis SSI también se utilizan en otros lenguajes de secuencias de comandos , como ASP .

Comandos SSI básicos

Descripción

config : controla varios aspectos del escaneo. Sus atributos pueden ser:

Variables para tamañofmt :

<!--#config sizefmt="abbrev"--> Muestra el tamaño del archivo en kilobytes: (17k) <!--#config sizefmt="bytes"--> Muestra el tamaño del archivo en bytes (17.076)

Variables para timefmt :

Formato Descripción Ejemplo
%a Nombre corto del día de la semana. Lun
%A Nombre completo del día de la semana. Lunes
%b Abreviatura del nombre del mes Dic
%B Nombre del mes completo Diciembre
%d Día del mes 01 (no 1)
%D Fecha en el formato "%m/%d/%y" 31/12/99
%mi Día del mes 13
%H Horas en formato de 24 horas 13
%YO Horas en formato de 12 horas 01
%j día del año 235
%metro Número de mes 01
%METRO minutos 03
%pags AM/PM (AM/PM) SOY
%r Hora en el formato "I:M:S p" 23:35:46
%S Segundos 34
%s Tiempo en segundos desde el 01/01/1970 957228726
%T Hora en el formato "%H:%M:%S" 14:05:34
%U semana del año dieciséis
%v Número del día de la semana cuatro
%y Año en formato YY 99
%Y Año en formato AAAA 1999
%Z Zona horaria MSK

Tenga en cuenta que los comandos #config sizefmt y #config timefmt afectan a todos los comandos SSI relacionados desde donde fueron llamados hasta la parte inferior de la página. Por lo tanto, es mejor proporcionar cada llamada a los comandos #flastmod y #fsize con su propio comando #config.

set - establece el valor de una variable. Sus atributos son var, que especifica el nombre de la variable, y value, que especifica su valor.

La sustitución de variables se realiza dentro de las cadenas entrecomilladas en la mayoría de los argumentos de la directiva SSI. En estos casos, el signo de dólar se puede insertar precediéndolo de una barra oblicua:

<!--#if expr="$a = \$prueba" -->

Para evitar la ambigüedad, puede encerrar el nombre de la variable entre llaves:

<!--#set var="Zed" value="${a}bc_${abc}" -->

Como resultado de esta asignación, la variable Zed tendrá el valor "Xbc_Y" si la variable a es igual a X y la variable abc es igual a Y.

printenv - Imprime una lista de las llamadas " variables de entorno " con sus valores. Llamado sin parámetros.

Variables de entorno:

echo - imprime el valor de la variable SSI establecida. Atributos válidos:

flastmod : muestra la fecha de la última modificación del archivo en el formato definido mediante timefmt. Los atributos son similares a los atributos fsize.

fsize : muestra el tamaño del archivo en el formato definido mediante sizefmt. Atributos válidos:

incluir : incluye el texto de otro documento o archivo en el archivo escaneado. Todas las reglas de restricción de acceso establecidas se aplican al archivo incluido. Si el directorio desde el que se incluye el archivo tiene establecida la opción IncluyeNOEXEC e incluir el documento haría que el programa se ejecutara, el documento no se incluye y se muestra un mensaje de error. Los scripts CGI se invocan como de costumbre con una URL, que puede contener una cadena de consulta codificada. La ubicación del archivo se especifica mediante atributos:

Sentencias condicionales

Los elementos básicos del control son:

<!--#if expr="prueba_condición" --> <!--#elif expr="prueba_condición" --> <!--#más --> <!--#endif -->

Los elementos elif y else son opcionales.

El elemento endif finaliza el elemento if y es obligatorio.

test_condition puede ser uno de los siguientes:

Si cadena2 tiene la forma /cadena/ , se interpreta como una expresión regular. Su sintaxis es similar a la de las expresiones regulares en el comando egrep de Unix (consulte Expresiones regulares )
(condición_prueba) verdadero si condición_prueba es verdadero;
! test_condition es verdadero si test_condition es falso
prueba_condición1 && prueba_condición2 verdadero si tanto prueba_condición1 como prueba_condición2 son verdaderas
prueba_condicion1 || test_condition2 es verdadero si al menos test_condition1 o test_condition2 es verdadero.
"=" y "!=" tienen prioridad sobre "&&" y "||" y "!" tiene la máxima prioridad.

Todo lo que no se reconoce como una variable se considera una cadena. Si la cadena tiene espacios o tabulaciones, debe estar entre comillas.
Lo que vale la pena recordar es que es mejor no usar comandos SSI al crear páginas en editores como Front Page, generalmente no los entienden y los tiran, y que un comando SSI no se puede llamar desde otro (ya que es imposible llamar un comando SSI de un script y un script de un script) .

Ejemplos

Configuración del mensaje del controlador de errores

<!--#config errmsg="[Hubo un error al abrir la página. Notifique al propietario del sitio.]" -->

Configuración del formato de salida de fecha y hora

<!--#config timefmt="%d/%m/%y" --> Salida: 07/03/06 <!--#config timefmt="%d/%m/%Y, %H:%M:%S" --> Salida: 07/03/2006, 20:16:33

Configuración de variables

http://<!--#echo var="HTTP_HOST"--><!--#echo var="DOCUMENT_URI"--> Producción: http://ru.wikipedia.org/w/index.php?title=SSI_(programación)

Insertar fecha de modificación del archivo

<!--#flastmod archivo="archivo.html"-->

Pegar el contenido de un archivo

<!--#incluir archivo="footer.html"--> <!--#include virtual="encabezado.asp"--> <!--#include virtual="/derecho.enlaces.txt"-->

Comprobación de condiciones

<!--#if expr="condición_de_prueba"--> <!--#elif expr="prueba_condición"--> <!--#más--> <!--#endif-->