Prisma Web tutorial

 

Aqui terá uma série de dicas de como usar prisma como script cgi, rodá-lo no Xampp como é feito com o PHP.

A presente página será sempre que possível expandida com novas dicas e exemplos.


 

Para começar instale o Xampp, se não sabe dê uma olhadinha aqui: <instalando Xampp>

Provavelmente  seguindo o tutorial você já deve ter feito os testes dos cgis.


 

Erro no Windows

Se no Windows deu erro, saiba que pode ser o path (caminho) do interpretador prisma que deve ser mudado de:

para:


Feito isso vamos ao tutorial — Vá para final teoria se preferir.


 


Teoria

Desenvolver um aplicativo web é a promessa de um futuro que já é presente. Pense nas possibilidades, um aplicativo online é feito uma vez e acessível a todos os dispositivos por meio do navegador de internet. Os dados ficam seguros em uma máquina central.

Com algumas adaptações é possível usar prisma nesse intuito, como um cgi.

O que é um cgi – Common Gateway Interface ( interface de porta de entrada comum ). O que precisamos saber é que com isso podemos criar páginas html em tempo de execução no servidor.

Como funciona o cgi?

Como um programa prisma normal! Ao usarmos a função imprima(), A string é mandada para a tela do navegador ao invés da tela de comando. Tudo o que mandamos imprimir no formato html o navegador interpreta o código e exibe uma página web html. Para ler os dados de um campo do html usamos a tag <form> ligada a um script cgi que envia os dados após um botão submit ser clicado na página aberta no navegador.

 Final teoria


Exemplo – 1  

Objetivo: imprimir ‘Ola Mundo Em Prisma’ na tela do navegador.

Crie um arquivo ex1.pri.cgi (não sabe onde salvar? clique <aqui>

saída: ex1

Esta linha acima sempre deverá ser a primeira linha. Ela diz onde fica o interpretador para executar o script cgi.

Fique atento pois o local do interpretador muda do Linux para Windows.


Esta é a primeira coisa a ser impressa, senão não funcionará. Ela diz o tipo de arquivo que no caso é html. Existem outros tipos como txt/plain\n\n  imag/png\n\n etc. por enquanto ficamos com o text/html\n\n. Observe que é necessário pular duas linhas apos o tipo: \n\n para funcionar corretamente.

O código restante é a impressão de um formato html padrão, basta usar sua criatividade e conhecimento em html e pronto, mande o script imprimir:

Conclusão: percebeu que de fato o que o interpretador prisma faz é imprimir todo o código html? gerando a página dinamicamente. Logo basta entender de html para gerar um site inteiro dinamicamente com prisma. Para saber mais sobre html vá <aqui>.

 

o exemplo 1 poderia ser impresso em uma string multilinha, já que não tem interação com o usuário:


Exemplo – 2

 

Objetivo: receber uma string do usuário e imprimir no navegador;

Para receber dados precisamos usar FORM do html, este é conectado a um cgi prisma enviando os dados para ele.

Há duas formas de enviar dados: GET e POST, não se preocupe logo adiante entenderá a diferença de ambos.

Crie um arquivo – ex2.pri.cgi (faça o mesmo processo de permissão caso use Linux)

Segue o código:

A novidade aqui fica por conta da tag <form>:

Esta é a abertura do form, deve ter o atributo action indicando o caminho do cgi, no caso aqui, o caminho dele mesmo. Lembre-se em Prisma, como em Lua, duplos colchetes são usados para strings longas de várias linhas.

Temos aqui um rótulo <label></label> e dentro dele uma entrada de texto de linha única <input></input> note que é com ‘n’ antes do ‘p’ pois vem de in (dentro)  e put (colocar), dentro da abertura dessa tag há algo muito importante que é o ‘name’. É pelo nome que sabemos a origem dos dados enviados ao servidor. Tem também size que é o tamanho. O <br> pula uma linha.

Logo depois temos outros inputs de texto:

Entrada de textos snome e idade.

Este input é do tipo submit com botão. Ao pressioná-lo todos os inputs de texto anteriores mandam seus dados ao servidor.

aqui é o fechamento do form

É assim que pegamos a string enviada pelo form. Ela fica armazenada temporariamente em uma variável de ambiente do servidor chamada query string (string de busca). Usamos a função sis.obtvarambiente(“NOMEVAR”) para pegar seu valor.

Método de envio: como não definimos o método na tag form, o padrão é o GET. Para entender veja o recorte de tela:

urlcgi

Observe que os dados dos inputs foram mandados pela URL ficando visíveis na barra de endereço do navegador, isso é o método GET. Os dados são enviados em uma única string com alguns códigos especiais.

A ordem é essa: nome_do_input=valor_digitado_no_input& ( o & é o que divide um valor de outro). Como o + e o & são usados como caracteres especiais, se houver algum dentro do valor ele é substituído por um %xx em que xx é um hexadecimal de 01 a FF seguindo a tabela unicode e assim com todos os acentos e caracteres especiais. Para saber sobre unicodes em cgi veja <aqui> (coluna do meio).

a saída acima foi para José Silva 49  ( a letra ‘é’ foi impressa como %E9)

Mas como usar um dado codificado? Estou trabalhando em uma biblioteca com funções web cgi em prisma, ela se chama pcgi atualmente ela já contém uma função para decodificar os dados, e pegar os valores por nome. (logo irei postar e dizer como usá-la)

 

Usando a biblioteca html.pris

Baixe a lib aqui: Download e execute setup.pbrexe através do interpretador prisma, serve tanto para Linux quanto Win.

html.pris é uma biblioteca básica para facilitar a criação de tags do html. Ela é feita em código fonte Prisma e portanto você pode modificá-la e aprimorá-la, colocando novas funções.

Vamos refazer os exemplos anteriores usando esta lib:

Salve como ex3.pri.cgi | não se esqueça de dar permissão de executar no Linux.

Detalhes:

O trecho acima inclui as funções da lib html na tabela local html. Assim podemos acessar seus métodos.

Inicia o header type do html: “content-type: text/html /n/n” necessário para o funcionamento do cgi.

Inicia o cabeçalho html:  “<html><head>”

Acima definimos a tag titulo:  “<title>Teste libhtml</title>”

Acima fechamos o </head> e abrimos o body: <body>

Acima funcao linha que serve para codificar quebras de linha em html: <br>; O único parâmetro é o número de linhas que queremos pular. Padrão é 1, caso deixe sem parâmetro.

Acima imprimimos um cabeçalho de título 1 em html:  “<h1>Ola mundo em Prisma cgi</h1>”. O primeiro argumento é o tipo de título (1 a 6); o segundo é o texto a ser impresso.

Este comando acima serve para fechar a tag </body> e </html> finalizando o arquivo html em cgi.

 

Para ver os detalhes da biblioteca html, veja o manual de referência: <aqui>

Usando a lib pcgi

Baixe aqui: download e execute o setup.pbrexe com o interpretador prisma. Funciona no Linux ou Windows.(32bits)

Essa lib possibilita obter as variáveis de ambiente com funções mais amigáveis, facilita na decodificação e obtenção dos métodos GET e POST.

Vamos refazer o segundo exemplo com o uso desta lib:

Detalhes:

Caminho do interpretador prisma no servidor. Lembre-se que para Windows deve-se mudar esse caminho para:


 

Continuando:

Incluindo as bibliotecas html e pcgi com facilidades para programação web.


Temos o Header (‘Content-type: txt/html \n\n’), iniciando o html (<html><head>) e titulo da página.


 

Acima, imprimimos com a função poe() uma tag criada com a função html.tag(). Nesta função temos:

nome da tag: ‘meta’; no segundo parâmetro deixamos uma string vazia: ” pois a tag meta é vazia. (<meta></meta>); no terceiro parâmetro temos uma tabela com o campo atrib, este campo insere seu conteúdo na abertura da tag, veja abaixo:


Fechando o head e iniciando o body(corpo) do html: (</head><body>);


Abrindo uma tag form para enviar dados ao servidor. Primeiro parâmetro é o action, o nome do script a ser executado após o botão submit ser pressionado, neste caso o próprio script. Segundo parâmetro é o method (método), pode ser omitido, o padrão é “GET”.

Nota: Lembre-se que o método “GET” manda os dados pelo url na barra de endereços do navegador.


Acima temos as entradas (input) de texto. Muito importante definir bem o atributo name pois é com ele que vamos receber cada dado corretamente. Size é o tamanho (comprimento) do input. O comando html.linha(2) pula duas linhas.

Obs. Como não criei ainda a função na lib html para criar inputs devemos imprimir normalmente a tag inteira.

Obs. os valores dos atributos após o sinal de igual devem estar entre apas duplas.


Criamos um botão de envio (submit). O type deve estar definido como “submit”. O atributo value é o rótulo do botão. Ao ser pressionado, as informações do form são enviadas e processadas pelo script definido na tag form.


 

Este comando finaliza o form (</form>). É muito importante, não se esquece dele.


Finalmente chegamos na parte que usa as funções da biblioteca pcgi:

 

Usamos a função acima para receber os dados do form em uma única string. Se imprimisse dado seria assim: nome=Pedro&idade=23    caso seja digitado Pedro no campo nome e 23 no campo idade.


Acima temos a função cgi.obt_var() que processa a string dado e obtém os valores de acordo com o nome passado no segundo parâmetro. No caso acima, a função procura dentro da string dado a palavra “nome” e “idade” sem aspas, se encontrá-las retorna o valor que está entre o ‘=’ e o ‘&’ ou entre o ‘=’ e o fim da string. Se nada é encontrado o retorno é nulo.


Enfim, imprimimos os valores atribuídos às variáveis nome e idade com a função html.p() que cria uma tag parágrafo.


Acima, finalizamos o html e para não haver nenhum problema usamos a função sis.saia();

Obs. Veja que os códigos da url são processados automaticamente pela função cgi.obt_var() e substituídos pelo devido caractere.

Para mais detalhes veja o manual de referência pcgi <clicando aqui>