
As facilidades de programação de aplicativos CGI e ISAPI foram implementadas, na OPUS e na OPUSWin, através de comandos e funções.
A estrutura geral de um programa OPUS/OPUSWin para gerar programas CGI ou DLLs ISAPI é a seguinte:
|
Gerar programa CGI "demo" |
"Gerar DLL ISAPI "demo.dll" |
|
$web prog demo ... var=html_var("...") ... html_read( ) html_get("...",varx) ... html_init( ) html_head () html_put ("<html><head><title><body>") .... html_put(‘<FORM method="POST" ’) html_put(‘action="/cgi-bin/demo">’) ... BeginHtml <INPUT type="text" name="xxx"> ... </body></html> … EndHtml html_write("") return |
$dll=demo.dll (ou $dll=demo.isa) proc HttpExtensionProc (ou proc http) ... var=html_var("...") ... html_read( ) html_get("...",varx) .... html_init( ) html_head () html_put ("<html><head><title><body>") ... html_put(‘<FORM method="POST" ’) html_put(‘action="/scripts/demo.dll">’) ... BeginHtml <INPUT type="text" name="xxx"> ... </body></html> … EndHtml html_write("") return |
Os comandos e funções utilizados para construir programas CGI e DLLs ISAPI são os seguintes:
|
Comando ou função |
Descrição do comando / função |
Sintaxe |
Obs |
|
Html_init |
Aloca e inicializa uma área, em memória, a ser utilizada na composição do documento HTML que será enviado ao Browser (Cliente). Esta área é alocada de forma eficiente e dinâmica, sendo "esticada" ou "encolhida" conforme a necessidade, ou seja, conforme a quantidade e tamanho dos "html_put". |
html_init( ) |
|
|
Html_put |
Armazena a cadeia especificada em <varc> numa área temporária, em memória, destinada a construir o documento HTML. Esta área é alocada e inicializada pelo comando html_init( ), sendo gerenciada, de forma eficiente, conforme as necessidades. |
html_put (<varc>) |
|
|
Html_write |
Solicita ao servidor para enviar ao cliente (Browser) o documento construído através de sucessivos comandos html_put. Usualmente, o argumento passado é uma cadeia vazia, Porém, pode ser informado, como argumento, o nome de um arquivo, em cujo caso, todos os comandos HTML, especificados no comando html_put, serão gravados nele. Esta opção é útil para debug ou para uso posterior do documento HTML gerado. |
html_write ("") ou html_write ("<nome>") |
|
|
Html_read |
Extrai e formata, em áreas temporárias da OPUS ou em vetores definidos dentro do programa, todos os campos de um FORM recebidos no servidor Web através do método POST. Quando este comando for usado sem parâmetros, os campos são armazenados em pares, conforme seu nome e seu valor, para serem disponibilizados, um a um, utilizando sucessivos comandos html_get. Quando este comando for usado com os parâmetros <v1> e <v2>, os nomes dos campos são armazenados no vetor <v1> e os valores correspondentes são armazenados no vetor <v2>. |
html_read ( ) ou html_read(<v1>,<v2>) |
|
|
Html_get |
Este comando transfere para áreas do programa do usuário o conteúdo de cada um dos campos, previamente extraídos e armazenados pelo comando html_read. Cada comando html_get obtém apenas um campo, aquele identificado em <nome>, sendo que <nome> é o identificador atribuído a cada campo, botão ou figura, na opção INPUT quando da definição do FORM e <varc> é uma variável cadeia onde será colocado o conteúdo do campo identificado por <nome>. Se este campo não existir na área de memória obtida pelo comando html_read (estiver "empty"), ou seja, se não tiver sido digitado pelo usuário (no FORM HTML), o conteúdo de <varc> será uma cadeia vazia. |
html_get (<nome>,<varc>) |
|
|
Html_getmultiple |
Transfere para um vetor de tipo cadeia as seleções múltiplas efetuadas pelo usuário sobre uma lista ComboBox, construída por comandos HTML do tipo: <SELECT MULTIPLE> <OPTION … > </SELECT> O vetor <vetc> é definido dentro do programa OPUSWeb, conforme as características da ComboBox definida dentro do Formulário. Os valores correspondentes às várias escolhas, dentro da lista ComboBox , são armazenados no vetor <vetc> de maneira seqüencial. |
html_getmultiple (<nome>,<vetc>) |
|
|
Html_var |
Obtém o valor de uma determinada variável de ambiente, identificada por <nome>, colocando-o na variável cadeia varx. |
varx=html_var (<nome>) |
|
|
Html_head |
Insere, na resposta do servidor, o cabeçalho especificado em <varc>. Geralmente, o comando html_head serve para especificar o item "Content_Type", tanto no caso de DLLs ISAPI como programas CGI. Caso não seja especificado o parâmetro <varc> a OPUS constrói o cabeçalho "Content-type" no formato adequado, dependendo da plataforma (Unix ou Windows) em que o programa OPUSWEB está sendo compilado. |
html_head (<varc>) ou html_head () ou html_head ("") |
|
|
Html_exec |
Solicita ao servidor o redirecionamento do pedido para a URL especificada pelo operando <varc>. Em aplicações CGI, usamos o comando Location para redirecionar uma URL. |
html_exec (<varc>) |
(01) |
|
Html_log |
Solicita ao servidor para gravar a cadeia <cadlog> no log do servidor Web, para ser utilizado de variadas maneiras, por exemplo, para debug e estatísticas. |
html_log (<cadlog>) |
(01) |
|
BeginHtml |
Indica que, a seguir, se inicia a codificação de comandos HTML dentro de um programa OPUS ou OPUSWin. Os blocos de comandos são fechados com o comando EndHtml. Dentro dos blocos BeginHtml até EndHtml são permitidos códigos HTML, CSS, Dynamic HTML, Java Script, VBScript, Jscript, ASP, PHP e outros, conforme a conveniência do aplicativo. Entre um BeginHtml e um EndHtml podem ser especificadas "tags" a serem interpretadas pela OPUSWEB, conforme os seguintes critérios:
|
BeginHtml |
|
|
EndHtml |
Serve para fechar o bloco de comandos HTML aberto pelo comando BeginHtml, previamente declarado num programa OPUSWeb (OPUS ou OPUSWin)) |
EndHtml |
|
|
Html_msg |
Serve para emitir uma mensagem na tela do Browser. A mensagem está contida no vetor cadeia <vetc>, passado como parâmetro e será mostrada em tantas linhas quantos sejam os elementos do vetor <vetc>. |
Html_msg(<vetc> |
|
|
Html_vpost |
Serve para emitir uma mensagem na tela do Browser mostrando a lista dos campos de um FORM, que foram submetidos através do método POST. Esta função é útil na depuração de um programa OPUSWeb. |
Html_vpost() |
|
|
Html_vquery |
Serve para emitir uma mensagem na tela do Browser mostrando os dados contidos na variável QUERY_STRING (submetidos, por default, através do método GET). Esta função é útil na depuração de um programa OPUSWeb. |
Html_vquery() |
|
|
Html_venv |
Serve para emitir uma mensagem na tela do Browser mostrando uma lista de todas as variáveis de ambiente, também conhecidas como variáveis do servidor. Esta função é útil na depuração de um programa OPUSWeb. |
Html_venv() |
Observações:
(01)à Os comandos Html_exec e Html_log são usados apenas em programas ISAPI.
html_init( )
html_head()
BeginHtml
<html><head><title>
Teste ISAPI...
</title></head><body>
<h2>Demo ISAPI...</h2>
<hr size=6 noshade>
EndHtml
html_write("")
Os componentes CGI e ISAPI constituem extensões do Servidor WEB e, como tais:
Quando um programa (ou DLL) OPUSWeb recebe o controle, executa os passos informados na tabela a seguir:
|
Tarefa a executar |
Função OPUSWeb |
|
Testar variáveis de ambiente, por exemplo, Content_length e Query_string. |
Html_var() |
|
Obter os dados do FORM, informados no Browser. |
Html_read() e Html_get() |
|
Processar os dados obtidos |
Programa OPUS OPUSWin |
|
Construir documento HTML de resposta |
Html_put(), BeginHtml e EndHtml |
|
Retornar ao Servidor Web entregando-lhe o documento HTML a ser enviado ao Browser |
Html_write() Return |
