Shtml e asp são semelhantes. Nos arquivos nomeados após o SHTML, algumas instruções SSI são usadas, assim como as instruções no ASP. Você pode escrever instruções SSI no arquivo shtml. Quando o cliente acessa esses arquivos shtml,
O lado do servidor lerá e interpretará esses arquivos SHTML e interpretará as instruções SSI contidas no arquivo shtml. Por exemplo: você pode usar as instruções SSI para consultar outros arquivos HTML (#include) no arquivo shtml. O arquivo enviado pelo servidor para o cliente é que o shtml já explicado não possui instruções SSI. Ele implementa funções que o HTML não possui, ou seja, pode implementar a dinâmica
Pode -se dizer que o SHTML é uma evolução do HTML. Como o sistema de notícias da Sina, o conteúdo de notícias é corrigido, mas os anúncios e os menus nele são citados em #include.
Atualmente, existem principalmente os seguintes usos:
1. Exibir variáveis de ambiente do lado do servidor <#echo>
2. Insira o conteúdo do texto diretamente no documento <#include>
3. Exibir informações relacionadas ao documento da web <#flastmod> <#fsize> (como data/tamanho de criação de arquivos, etc.)
4. Execute diretamente vários programas no servidor <#exec> (como CGI ou outros programas executáveis)
5. Defina o formato de exibição de informações do SSI <#Config> (como o método da data de criação/tamanho de criação de arquivos)
SSI avançado <XSSI> pode definir variáveis a serem usadas se instruções condicionais.
Usando SSI
O SSI é um conjunto de comandos fornecidos para servidores da Web. Esses comandos são incorporados diretamente ao conteúdo do comentário do documento HTML. como:
<#include file = info.htm->
É uma diretiva SSI, usada para copiar o conteúdo do info.htm para a página atual. Quando o visitante navega, ele verá que outros documentos HTML exibem o conteúdo de info.htm.
As formas de uso de outras instruções do SSI são basicamente as mesmas que as mencionadas agora. Pode -se observar que o uso do SSI está apenas inserindo um pequeno código, e os formulários de uso são muito simples.
Obviamente, se o servidor da Web não suportar o SSI, ele simplesmente o tratará como informações de anotação e pulará o conteúdo diretamente; O navegador também ignorará essas informações.
Como configurar a funcionalidade SSI no meu servidor da web?
Em alguns servidores da Web (como o IIS 4.0/Sambar 4.2), os arquivos que contêm a diretiva #include devem usar uma extensão que foi mapeada para o intérprete SSI; Caso contrário, o servidor da Web não processará a diretiva SSI; Por padrão, as extensões .stm, .shtm e .shtml são mapeadas para o intérprete (ssinc.dll).
O Apache é baseado em suas configurações, modifique srm.conf como:
Text addtype/x-server pateded-html .shtml analisará as diretivas SSI apenas para arquivos com a extensão .shtml
Text addtype/x-server-parsed-html .html irá analisar as diretrizes SSI para todos os documentos html
O Netscape Web Server pode usar diretamente o Administration Server (servidor administrativo) para ativar a função SSI.
O site usa a tag de mapeamento no programa de administrador do servidor e adiciona o tipo de conteúdo como: wwwserver/html-ssi
O servidor CERN não suporta SSI. Você pode usar o método SSI Scam. Faça o download de um script Perl em http://sw.cse.bris.ac.uk/webtools/fakessi.html para fazer com que seu servidor CERN use algumas instruções SSI. (A diretiva EXEC não é suportada.)
Formato básico de instrução SSI
Formato básico de instrução SSI:
Código do programa:
<! ---- nome da instrução = parâmetros de instrução>
<! ---- nome da instrução = parâmetros de instrução>
como
Código do programa:
<#include file = info.htm->
<#include file = info.htm->
ilustrar:
1. <!--> está anotação na sintaxe html. Essas informações serão ignoradas quando o servidor da Web não suportar SSI.
2. #include é uma das diretivas SSI.
3. O arquivo é o parâmetro de incluir, info.htm é o valor do parâmetro e refere -se ao nome do documento a ser incluído nesta instrução.
Perceber:
1. <!-Não há espaço entre o número #, apenas as instruções e parâmetros SSI existem.
2. A pontuação acima = ninguém pode estar faltando.
3. As instruções do SSI são sensíveis ao minúsculas, portanto os parâmetros devem ser minúsculos para funcionar.
Explicação detalhada do uso de instruções SSI
#echo demonstração
efeito:
Insira variáveis de ambiente na página.
gramática:
Código do programa:
<!-#echo var = nome da variável->
<!-#echo var = nome da variável->
Nome deste documento: Código do programa:
<!-#echo var = document_name->
<!-#echo var = document_name->
Hora atual: código do programa:
<!-#echo var = date_local->
<!-#echo var = date_local->
Seu endereço IP é o código do programa:
<!-#echo var = remote_addr->
<!-#echo var = remote_addr->
#include demonstração
efeito:
Insira o conteúdo do arquivo de texto diretamente na página do documento.
gramática:
Código do programa:
<#include arquivo = nome do arquivo->
<#include virtual = nome do arquivo->
<#include arquivo = nome do arquivo->
<#include virtual = nome do arquivo->
O nome do arquivo é um caminho relativo em relação ao diretório em que o documento usando a diretiva #include está localizado. Os arquivos incluídos podem estar no mesmo diretório de nível ou em seus subdiretos, mas não no diretório de nível anterior. Se o documento NAV_HEAD.HTM no diretório atual for file = Nav_head.htm.
O nome do arquivo virtual é o caminho completo para o diretório virtual no site. Se isso significa o arquivo Nav_head.htm no diretório Hoyi no diretório raiz do documento do servidor; então é arquivo =/hoyi/Nav_head.htm
parâmetro:
arquivo especifica a localização do arquivo contendo em relação a este documento
Virtual especifica o local em relação ao diretório raiz do documento do servidor
Perceber:
1. O nome do arquivo deve ter uma extensão.
2. Os arquivos incluídos podem ter qualquer extensão de arquivo. Eu acho que é mais conveniente usar a extensão HTM diretamente. A Microsoft recomenda o uso da extensão .inc (depende do seu hobby).
Exemplo:
Código do programa:
<#include file = Nav_head.htm-> Insira o arquivo de cabeçalho na página atual
<#include file = Nav_foot.htm-> Insira o arquivo de cauda na página atual
<#include file = Nav_head.htm-> Insira o arquivo de cabeçalho na página atual
<#include file = Nav_foot.htm-> Insira o arquivo de cauda na página atual
#fastmod e #fsize demonstrações
Função: #FlastMod Arquivo Última data de atualização
#fsize comprimento do arquivo
gramática:
Código do programa:
<!-#FLASTMOD FILE = Nome do arquivo->
<!-#fsize arquivo = nome do arquivo->
<!-#FLASTMOD FILE = Nome do arquivo->
<!-#fsize arquivo = nome do arquivo->
parâmetro:
O arquivo especifica a localização do arquivo contendo em relação a este documento, como info.txt, que representa o documento info.txt no diretório atual.
Virtual especifica o local em relação ao diretório raiz do documento do servidor, como /hoyi/info.txt
Perceber:
O nome do arquivo deve ter uma extensão.
Exemplo:
Código do programa:
<!-#FLASTMOD FILE = news.htm->
<!-#FLASTMOD FILE = news.htm->
Insira a data de atualização mais recente do arquivo News.htm no diretório atual na página atual
Código do programa:
<!-#fsize file = news.htm->
<!-#fsize file = news.htm->
Digite o tamanho do arquivo de notícias.htm no diretório atual na página atual
Demonstração #Exec
efeito:
Insira a saída de um programa externo na página. Ele pode ser inserido nos programas CGI ou a entrada de um aplicativo regular, dependendo se os parâmetros utilizados são CMD ou CGI.
gramática:
Código do programa:
<!-#EXEC CMD = Nome do arquivo->
<!-#EXEC CGI = Nome do arquivo->
<!-#EXEC CMD = Nome do arquivo->
<!-#EXEC CGI = Nome do arquivo->
parâmetro:
CMD Aplicações regulares
Programa de script CGI CGI
Exemplo:
Código do programa:
<!-#EXEC CMD = Cat /etc /passwd-> exibirá o arquivo de senha
<!-#EXEC CMD = DIR /B-> exibirá a lista de arquivos no diretório atual
<!-#EXEC CGI =/CGI-BIN/GB.CGI-> O programa CGI GB.CGI será executado.
<!-#EXEC CGI =/CGI-bin/access_log.cgi-> O programa CGI Access_Log.cgi será executado.
<!-#EXEC CMD = Cat /etc /passwd-> exibirá o arquivo de senha
<!-#EXEC CMD = DIR /B-> exibirá a lista de arquivos no diretório atual
<!-#EXEC CGI =/CGI-BIN/GB.CGI-> O programa CGI GB.CGI será executado.
<!-#EXEC CGI =/CGI-bin/access_log.cgi-> O programa CGI Access_Log.cgi será executado.
Perceber:
Como pode ser visto no exemplo acima, esta instrução é bastante conveniente, mas também existem problemas de segurança.
Método proibido:
. Apache, Exclua as opções inclui a linha EXECCGI em access.conf;
. No IIS, para desativar o comando #Exec, você pode modificar o metadatabase ssiexecdisable;
#config
Função: Especifica o formato da mensagem de erro, data e tamanho do arquivo retornado ao navegador do cliente.
gramática:
Código do programa:
<!-#configerrmsg = mensagem de erro personalizada->
<!-#configSizefmt = unidade de exibição->
<!-#configtimefmt = exibir formato->
<!-#configerrmsg = mensagem de erro personalizada->
<!-#configSizefmt = unidade de exibição->
<!-#configtimefmt = exibir formato->
parâmetro:
ErrMSG Custom SSI Execution Erro Mensagens podem ser usadas da maneira que desejar.
Método de exibição do tamanho do arquivo sizefmt, o padrão é o método de bytes (bytes) pode ser alterado para o método Kilobyte (ABREV)
Método de exibição de tempo do timefmt, o atributo de configuração mais flexível.
Exemplo: mostra o tamanho de um arquivo que não existe
Código do programa:
<!-#configerrmsg = Erro de execução do servidor, entre em contato com o administrador [email protected], obrigado! ->
<!-#FSIZE FILE = NO FILE.HTM->
<!-#configerrmsg = Erro de execução do servidor, entre em contato com o administrador [email protected], obrigado! ->
<!-#FSIZE FILE = NO FILE.HTM->
Exibir tamanho do arquivo em Kilobytes
Código do programa:
<!-#configSizefmt = abrev->
<!-#fsizefile = news.htm->
<!-#configSizefmt = abrev->
<!-#fsizefile = news.htm->
Exibir tempo em um formato de tempo específico
Código do programa:
<!-#configtimefmt = %y ano/ %m mês %D dia e semana %w Pequim TEMPO %H: %m: %s, %y Ano passou %J Days Hoje é a semana %U de %y ano->
<!-#echo var = date_local-> mostra que dia da semana, mês e fuso horário é hoje
<!-#configtimefmt = %a, %b de hoje, o fuso horário do servidor é %z, sim->
<!-#echo var = date_local->
<!-#configtimefmt = %y ano/ %m mês %D dia e semana %w Pequim TEMPO %H: %m: %s, %y Ano passou %J Days Hoje é a semana %U de %y ano->
<!-#echo var = date_local-> mostra que dia da semana, mês e fuso horário é hoje
<!-#configtimefmt = %a, %b de hoje, o fuso horário do servidor é %z, sim->
<!-#echo var = date_local->
Xssi
O XSSI (SSI estendido) é um conjunto de instruções SSI avançadas incorporadas no módulo Mod-Include do Apache 1.2 ou posterior.
Entre eles, as instruções disponíveis estão:
#printenv
#definir
#se
#printenv
Função: exibe todas as variáveis de ambiente atualmente presentes no ambiente do servidor da web.
Sintaxe: código do programa:
<!-#printenv->
<!-#printenv->
Parâmetros: Nenhum
Exemplo:
Código do programa:
<!-#printenv->
<!-#printenv->
#definir
Função: Você pode atribuir valores a variáveis a serem usadas na instrução IF subsequente.
Sintaxe: código do programa:
<!-#Set var = Valor do nome da variável = Valor variável->
<!-#Set var = Valor do nome da variável = Valor variável->
Parâmetros: Nenhum
Exemplo: código do programa:
<!-#set var = colorValue = vermelho->
<!-#set var = colorValue = vermelho->
#se
Função: Crie uma página que possa alterar os dados, que são exibidos de acordo com os requisitos de cálculo ao usar a instrução IF.
Sintaxe: código do programa:
<!-#se expr = $ Nome da variável = Valor variável a->
Mostre conteúdo
<!-#elif expr = $ Nome variável = Valor variável b->
Mostre conteúdo
<!-#else->
Mostre conteúdo
<!-#endif->
<!-#se expr = $ Nome da variável = Valor variável a->
Mostre conteúdo
<!-#elif expr = $ Nome variável = Valor variável b->
Mostre conteúdo
<!-#else->
Mostre conteúdo
<!-#endif->
Exemplo:
Código do programa:
<!-#se expr = $ server_name = http: //www.31896.net/-->
Bem -vindo à área de discussão de segurança do servidor http://www.31896.net/.
<!-#elif expr = $ server_name = http: //www.fineAcer.org/->
Bem -vindo ao QingChang Computer Network Security online http://www.fineAcer.org/.
<!-#else->
Bem -vindo à área de discussão de segurança do servidor!
<!-#endif->
<!-#se expr = $ server_name = http: //www.31896.net/-->
Bem -vindo à área de discussão de segurança do servidor http://www.31896.net/.
<!-#elif expr = $ server_name = http: //www.fineAcer.org/->
Bem -vindo ao QingChang Computer Network Security online http://www.fineAcer.org/.
<!-#else->
Bem -vindo à área de discussão de segurança do servidor!
<!-#endif->
NOTA: As barris usadas nas instruções anteriores são usadas para substituir as cotações internas, para que não sejam interpretadas como expressões finais. Não omitido.
1. Comando de configuração
O comando config é usado principalmente para modificar as configurações padrão do SSI. em:
Errmsg: defina a mensagem de erro padrão. Para retornar as informações de erro definidas pelo usuário normalmente, o parâmetro ERRMSG deve ser colocado na frente de outros comandos SSI no arquivo HTML, caso contrário, o cliente poderá exibir apenas as informações de erro padrão em vez das informações personalizadas definidas pelo usuário.
<!-#configerrmsg = erro! Envie um email para [email protected] ->
Timefmt: define o formato de uso de data e hora. O parâmetro timefmt deve ser usado antes do comando echo.
<!-#configtimefmt = %a, %b %d, %y->
<!-#echo var = last_modified->
Os resultados são exibidos como:
Quarta -feira, 12 de abril de 2000
Talvez os usuários não estejam familiarizados com o %a %b %d usado no exemplo acima. Vamos resumir alguns dos formatos de data e hora mais usados no SSI na forma de uma tabela.
Sizefmt: determina se o tamanho do arquivo é expresso em bytes, kilobytes ou megabytes. Se em bytes, o valor do parâmetro é bytes; A abreviação pode ser usada para kilobytes e megabytes. Da mesma forma, o parâmetro sizefmt deve ser colocado antes que o comando fsize seja usado.
<!-#configSizefmt = bytes->
<!-#fsize file = index.html->
2. Inclua comando
O comando incluir pode inserir texto ou imagens de outros documentos no documento analisado atualmente, que é a chave para todo o SSI. Através do comando incluir, você só precisa alterar um arquivo para atualizar o site inteiro instantaneamente!
O comando de inclusão tem dois parâmetros diferentes:
Virtual: fornece um caminho virtual para um documento no lado do servidor. Por exemplo:
<#include virtual =/inclui/header.html ->
Arquivo: fornece o caminho relativo ao diretório atual, onde ../ não pode ser usado, nem o caminho absoluto pode ser usado. Por exemplo:
<#include file = header.html ->
Isso requer que cada diretório contenha um arquivo cabeçalho.html.
3. Comando Echo
O comando Echo pode exibir as seguintes variáveis de ambiente:
Document_name: exibe o nome do documento atual.
<!-#echo var = document_name->
Os resultados são exibidos como:
index.html
Document_uri: exibe o caminho virtual para o documento atual. Por exemplo:
<!-#echo var = document_uri->
Os resultados são exibidos como:
/Yourdirectory/yourfilename.html
À medida que o site continua a crescer, os URLs que estão ficando mais longos serão definitivamente uma dor de cabeça. Se você usar o SSI, tudo será resolvido. Porque podemos combinar o nome de domínio do site e o comando SSI para exibir o URL completo, ou seja:
http: // yourDomain%3c!-/#echo var = & ... uot; ->
Query_string_unescaped: Exibe a sequência de consulta enviada pelo cliente que não foi escapada, com todos os caracteres especiais precedidos por caracteres de fuga. Por exemplo:
<!-#echo var = query_string_unescaped->
Date_local: exibe a data e a hora do servidor de configuração do fuso horário. Os usuários podem personalizar as informações de saída com base no parâmetro timefmt do comando config. Por exemplo:
<!-#configtimefmt = %a, o %d de %b, no ano %y->
<!-#echo var = date_local->
Os resultados são exibidos como:
Sábado, 15 de abril, no ano 2000
Date_gmt: a função é a mesma que date_local, exceto que retorna uma data com base no GMT. Por exemplo:
<!-#echo var = date_gmt->
Last_modified: exibe o último horário de atualização do documento atual. Da mesma forma, essa é uma característica muito prática no SSI. Desde que você adicione o seguinte texto simples ao documento HTML, você pode exibir dinamicamente o tempo de atualização na página.
<!-#echo var = last_modified->
Variáveis de ambiente CGI
Além das variáveis de ambiente SSI, o comando Echo também pode exibir as seguintes variáveis de ambiente CGI:
Server_software: exibe o nome e a versão do software do servidor. Por exemplo:
<!-#echo var = server_software->
Server_name: exibe o nome do host do servidor, alias DNS ou endereço IP. Por exemplo:
<!-#echo var = server_name->
Server_protocol: exibe o nome e a versão do protocolo usados pela solicitação do cliente, como HTTP/1.0. Por exemplo:
<!-#echo var = server_protocol->
Server_port: exibe a porta de resposta do servidor. Por exemplo:
<!-#echo var = server_port->
Request_method: exibe o método de solicitação de documento do cliente, incluindo get, cabeça e postagem. Por exemplo:
<!-#echo var = request_method->
Remote_Host: Exibe o nome do host cliente que emitiu a mensagem de solicitação.
<!-#echo var = remote_host->
REMOTE_ADDR: Exibe o endereço IP do cliente que emitiu as informações da solicitação.
<!-#echo var = remote_addr->
Auth_type: exibe o método de autenticação da identidade do usuário.
<!-#echo var = auth_type->
Remote_user: Exibe o nome da conta usado pelo usuário acessando a página protegida.
<!-#echo var = remote_user->
4. FSIZE: Exibe o tamanho do arquivo especificado. Você pode personalizar o formato de saída com o parâmetro sizefmt do comando de configuração.
<!-#fsize file = index_working.html->
5. FLASTMOD: Exibe a última data de modificação do arquivo especificado. Você pode controlar o formato de saída com o parâmetro timefmt do comando de configuração.
<!-#configtimefmt = %a, o %d de %b, no ano %y->
<!-#FLASTMOD FILE = FILE.HTML->
Aqui, podemos usar o parâmetro FLASTMOD para exibir a data de atualização de todas as páginas vinculadas em uma página. O método é o seguinte:
<!-#configtimefmt = %b %d, %y->
<A href =/diretório/file.html> arquivo </a>
<!-#flastmod virtual =/diretório/file.html->
<A href =/outro_directory/outro_file.html> Outro arquivo </a>
<!-#flastmod virtual =/outro_directory/outro_file.html->
Os resultados são exibidos como:
Arquivo 19 de abril de 2000
Outro arquivo em 08 de janeiro de 2000
6. Exec
O comando EXEC pode executar scripts CGI ou comandos de shell. Como usá -lo é o seguinte:
CMD: use /bin /sh para executar a sequência especificada. Se o SSI usar a opção IncluiNoExec, o comando será bloqueado.
CGI: pode ser usado para executar scripts CGI. Por exemplo, no exemplo a seguir, use o programa de scripts contador.pl sob o diretório CGI-BIN do servidor para colocar um contador em cada página:
<!-#EXEC CGI =/CGI-BIN/Counter.pl->