<< tópico anterior próximo tópico>>

Server-Side Includes (SSI)

As server-side includes são diretivas que você coloca em uma página HTML e que o servidor web interpreta antes de enviá-la ao browser do usuário. Por exemplo, digamos que você queira inserir em todas as páginas de seu site um cabeçalho padrão, com um logotipo. Ao invés de ter de copiar o código HTML do cabeçalho em todos as páginas, você pode colocá-lo em um arquivo separado (usaremos cabecalho.html) e colocar a seguinte diretiva SSI nas páginas onde quer que o cabeçalho apareça:

<!--#include virtual="cabecalho.html" -->

No caso, essa diretiva diz ao servidor para incluir o conteúdo do arquivo "cabecalho.html", na posição onde a diretiva está (a diretiva será substituída pelo conteúdo do arquivo antes de a página ser enviada para o browser do visitante).

Para ativar o uso das server-side includes em uma página de seu site, basta fazer com que o arquivo tenha a extensão .shtml. Quando uma página com essa extensão é solicitada por um usuário, o servidor web vai procurar por diretivas SSI por todo o código HTML da página e substituí-las pelo valor devido. Como essa busca por diretivas é um processo que exige um pouco mais de processamento que simplesmente fornecer uma página HTML comum, o uso da extensão especial ajuda a evitar que o servidor que tenha que varrer todos os arquivos à procura de diretivas SSI, ou seja, só os arquivos que realmente estão "marcados" como tendo SSI é que são interpretados.

As diretivas SSI sempre estão na forma de comentários, como no exemplo genérico:

<!--#elemento atributo="valor" atributo="valor" ... -->

Os valores devem, de preferência, estar entre aspas e devem haver um ou mais espaços em branco antes do final de comentário (-->). Outro detalhes da notação é que não pode haver espaços entre o início do comentário (<!--) e o sinal de tralha (#) e o elemento.

 

Algumas diretivas SSI úteis

#config

Configura o ambiente SSI. O ambiente é resetado para cada documento SSI. Você pode configurar a mensagem de erro, o formato dos tamanhos de arquivos e os formatos de data e hora.

#echo

Imprime o valor de uma variável. As variáveis disponíveis são:

Nome da variável Significado
DOCUMENT_NAME nome do arquivo
DOCUMENT_URI URL relativa do arquivo
QUERY_STRING_UNESCAPED string de parâmetros CGI, descodificada
DATE_LOCAL data/hora locais
DATE_GMT data/hora GMT
LAST_MODIFIED data/hora da última modificação
SERVER_SOFTWARE nome do software do servidor web
SERVER_NAME nome do servidor web
GATEWAY_INTERFACE versão o protocolo CGI
SERVER_PROTOCOL protocolo do servidor
SERVER_PORT porta do serviço
REQUEST_METHOD método da solicitação HTTP
PATH_INFO dados adicionais do path
PATH_TRANSLATED versão "traduzida" do path
SCRIPT_NAME nome do script
QUERY_STRING string de parâmetros CGI
REMOTE_HOST endereço da máquina cliente
REMOTE_ADDR endereço IP da máquina cliente
AUTH_TYPE método de autenticação
REMOTE_USER usuário remoto
REMOTE_IDENT identificação do usuário (RFC 931)
CONTENT_TYPE tipo do conteúdo
CONTENT_LENGTH tamanho em bytes do conteúdo

Por exemplo, a seguinte diretiva causaria a impressão do IP da máquina do usuário:

<!--#echo var="REMOTE_ADDR" -->

#exec

Executa um programa e insere sua saída no documento. Use o atributo "cgi" para acessar scripts através de sua URL ou o atributo "cmd" para comandos do sistema. Por exemplo:

<!--#exec cgi="/cgi-bin/teste.pl" -->
<!--#exec cmd="/bin/date" -->

Importante:
Por questões de segurança, não é permitido usar o atributo "cmd" da diretiva "exec". O atributo "cgi" deve ser usado em seu lugar.

#flastmod

Causa a impressão da data de modificação de um arquivo. Use o atributo "virtual" para especificar arquivos através de sua URL ou o atributo "file" para usar o caminho no sistema de arquivos. Exemplo:

<!--#flastmod virtual="teste/extra.txt" -->
<!--#flastmod file="/home/usuário/extra.txt" -->

#fsize

Insere o tamanho de um arquivo. O uso dos atributos "virtual" e "file" é o mesmo do último comando. Exemplo:

<!--#fsize virtual="teste/extra.txt" -->
<!--#fsize file="/home/usuário/extra.txt" -->

#include

Insere um arquivo no documento. Use o atributo "virtual" para incluir baseado na URL e "file" para basear-se no caminho. Exemplo:

<!--#flastmod virtual="teste/extra.txt" -->
<!--#flastmod file="/home/usuário/extra.txt" -->

#printenv

Imprime todas as variáveis e seus valores. Por exemplo:

<!--#printenv -->

#set

Atribui um valor a uma variável. Por exemplo:

<!--#set var="um_numero" value="123" -->

 

Há outras formas de se usar as SSI, com expressões condicionais e controle de fluxo. Para saber mais, por favor visite a página de SSI do Apache.

 

<< tópico anterior próximo tópico>>