{"id":2375,"date":"2016-01-12T11:31:24","date_gmt":"2016-01-12T15:31:24","guid":{"rendered":"http:\/\/linguagemprisma.br4.biz\/blog\/?page_id=2375"},"modified":"2016-02-10T22:25:14","modified_gmt":"2016-02-11T02:25:14","slug":"prisma-web-tutorial","status":"publish","type":"page","link":"https:\/\/linguagemprisma.br4.biz\/blog\/prisma-web-tutorial\/","title":{"rendered":"Prisma Web tutorial"},"content":{"rendered":"<p>&nbsp;<\/p>\n<h3>Aqui ter\u00e1 uma s\u00e9rie de dicas de como usar prisma como script cgi, rod\u00e1-lo no Xampp como \u00e9 feito com o PHP.<\/h3>\n<h4><\/h4>\n<h4>A presente p\u00e1gina ser\u00e1 sempre que poss\u00edvel expandida com novas dicas e exemplos.<\/h4>\n<hr \/>\n<p>&nbsp;<\/p>\n<p>Para come\u00e7ar instale o Xampp, se n\u00e3o sabe d\u00ea uma olhadinha aqui: <a href=\"https:\/\/linguagemprisma.br4.biz\/blog\/instalando-servidor-xampp\/\" target=\"_blank\">&lt;instalando Xampp&gt;<\/a><\/p>\n<p>Provavelmente \u00a0seguindo o tutorial voc\u00ea j\u00e1 deve ter feito os testes dos cgis.<\/p>\n<hr \/>\n<p>&nbsp;<\/p>\n<h2 style=\"text-align: center;\">Erro no Windows<\/h2>\n<p>Se no Windows deu erro, saiba que pode ser o path (caminho) do interpretador prisma que deve ser mudado de:<\/p>\n<pre class=\"\">#!\/usr\/local\/bin\/prisma<\/pre>\n<p>para:<\/p>\n<pre class=\"\">#!C:\\Prisma\\1.0\\bin\\prisma.exe<\/pre>\n<hr \/>\n<h3>Feito isso vamos ao tutorial &#8212; V\u00e1 para final teoria se preferir.<\/h3>\n<hr \/>\n<p>&nbsp;<\/p>\n<p style=\"text-align: center;\"><strong><br \/>\nTeoria<\/strong><\/p>\n<p>Desenvolver um aplicativo web \u00e9 a promessa de um futuro que j\u00e1 \u00e9 presente. Pense nas possibilidades, um aplicativo online \u00e9 feito uma vez e acess\u00edvel a todos os dispositivos por meio do navegador de internet. Os dados ficam seguros em uma m\u00e1quina central.<\/p>\n<p>Com algumas adapta\u00e7\u00f5es \u00e9 poss\u00edvel usar prisma nesse intuito, como um cgi.<\/p>\n<p>O que \u00e9 um cgi &#8211;\u00a0Common Gateway Interface ( interface de porta de entrada comum ). O que precisamos saber \u00e9 que com isso podemos criar p\u00e1ginas html em tempo de execu\u00e7\u00e3o no servidor.<\/p>\n<p style=\"text-align: center;\"><strong>Como funciona o cgi?<\/strong><\/p>\n<p style=\"text-align: left;\">Como um programa prisma normal! Ao usarmos a fun\u00e7\u00e3o imprima(), A string \u00e9 mandada para a tela do navegador ao inv\u00e9s da tela de comando. Tudo o que mandamos imprimir no formato html o navegador interpreta o c\u00f3digo e exibe uma p\u00e1gina web html. Para ler os dados de um campo do html usamos a tag &lt;form&gt; ligada a um script cgi que envia os dados ap\u00f3s um bot\u00e3o submit ser clicado na p\u00e1gina aberta no navegador.<\/p>\n<p style=\"text-align: center;\"><strong>\u00a0Final teoria<\/strong><\/p>\n<hr \/>\n<h1 style=\"text-align: center;\"><strong>Exemplo &#8211; 1 \u00a0<\/strong><\/h1>\n<p>Objetivo: imprimir &#8216;Ola Mundo Em Prisma&#8217; na tela do navegador.<\/p>\n<p style=\"text-align: left;\">Crie um arquivo ex1.pri.cgi (n\u00e3o sabe onde salvar?<a href=\"https:\/\/linguagemprisma.br4.biz\/blog\/web\/permissao-para-cgi-prisma-em-linux\/\" target=\"_blank\"> clique &lt;aqui&gt;<\/a><\/p>\n<pre class=\"lang:prisma decode:true \">#!\/usr\/local\/bin\/prisma\r\n\r\n\/\/troque para #!C:\\Prisma\\1.0\\bin\\prisma.exe caso use Xampp em Windows.\r\n\r\nimprima\"Content-type: text\/html\\n\\n\";\r\n\r\nimprima'&lt;html&gt;';\r\nimprima'&lt;head&gt;';\r\nimprima'     &lt;title&gt;Prisma cgi ex&lt;\/title&gt;';\r\nimprima'&lt;\/head&gt;';\r\nimprima'&lt;body&gt;';\r\nimprima'   &lt;h1&gt;Ola Mundo Em Prisma Cgi&lt;\/h1&gt;';\r\nimprima'&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;'; \/\/pula 5 linhas em html\r\nimprima'&lt;\/body&gt;';\r\nimprima'&lt;\/hmtl&gt;';\r\n\r\nsis.saia(); \/\/funcao para fechar prisma corretamente.\r\n<\/pre>\n<p>sa\u00edda:\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-2379\" src=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2016\/01\/ex1-300x85.png\" alt=\"ex1\" width=\"300\" height=\"85\" srcset=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2016\/01\/ex1-300x85.png 300w, https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2016\/01\/ex1.png 428w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<pre class=\"lang:prisma decode:true\">#!\/usr\/local\/bin\/prisma<\/pre>\n<p>Esta linha acima sempre dever\u00e1 ser a primeira linha. Ela diz onde fica o interpretador para executar o script cgi.<\/p>\n<p>Fique atento pois o local do interpretador muda do Linux para Windows.<\/p>\n<hr \/>\n<pre class=\"\">imprima\"Content-type: text\/html\\n\\n\";<\/pre>\n<p>Esta \u00e9 a primeira coisa a ser impressa, sen\u00e3o n\u00e3o funcionar\u00e1. Ela diz o tipo de arquivo que no caso \u00e9 html.\u00a0<strong><em>Existem outros tipos como txt\/plain\\n\\n \u00a0imag\/png\\n\\n etc. por enquanto ficamos com o text\/html\\n\\n. Observe que \u00e9 necess\u00e1rio pular duas linhas apos o tipo: \\n\\n para funcionar corretamente.<\/em><\/strong><\/p>\n<p>O c\u00f3digo restante \u00e9 a impress\u00e3o de um formato html padr\u00e3o, basta usar sua criatividade e conhecimento em html e pronto, mande o script imprimir:<\/p>\n<pre class=\"lang:prisma decode:true\">imprima'&lt;html&gt;';\r\nimprima'&lt;head&gt;';\r\nimprima'     &lt;title&gt;Prisma cgi ex&lt;\/title&gt;';\r\nimprima'&lt;\/head&gt;';\r\nimprima'&lt;body&gt;';\r\nimprima'   &lt;h1&gt;Ola Mundo Em Prisma Cgi&lt;\/h1&gt;';\r\nimprima'&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;'; \/\/pula 5 linhas em html\r\nimprima'&lt;\/body&gt;';\r\nimprima'&lt;\/hmtl&gt;';\r\n<\/pre>\n<p><em>Conclus\u00e3o: percebeu que de fato o que o interpretador prisma faz \u00e9 imprimir todo o c\u00f3digo html? gerando a p\u00e1gina dinamicamente. Logo basta entender de html para gerar um site inteiro dinamicamente com prisma. Para saber mais sobre html v\u00e1 <a href=\"https:\/\/linguagemprisma.br4.biz\/blog\/uncategorized\/dicas-de-html\/\" target=\"_blank\">&lt;aqui&gt;.<\/a><\/em><\/p>\n<p>&nbsp;<\/p>\n<p>o exemplo 1 poderia ser impresso em uma string multilinha, j\u00e1 que n\u00e3o tem intera\u00e7\u00e3o com o usu\u00e1rio:<\/p>\n<pre class=\"lang:prisma decode:true\">#!\/usr\/local\/bin\/prisma\r\n\r\n\/\/para windows troque a primeira linha para: #!C:\\Prisma\\1.0\\bin\\prisma.exe\r\n\r\npoe'Content-type: text\/html\\n\\n'; \/\/sempre deve ter este comando primeiro.\r\n\r\nimprima[[\r\n&lt;html&gt;\r\n  &lt;head&gt;\r\n      &lt;titulo&gt;PrismaAuto&lt;\/titulo&gt;\r\n  &lt;\/head&gt;\r\n&lt;body&gt;\r\n   &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;\r\n   &lt;h1&gt;Ola mundo em Prisma&lt;\/h1&gt;\r\n   &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;\r\n&lt;\/body&gt;\r\n&lt;\/html&gt;\r\n]]<\/pre>\n<hr \/>\n<h1 style=\"text-align: center;\"><strong style=\"font-size: 30px; line-height: 1.5;\">Exemplo &#8211; 2<\/strong><\/h1>\n<p>&nbsp;<\/p>\n<p>Objetivo: receber uma string do usu\u00e1rio e imprimir no navegador;<\/p>\n<p>Para receber dados precisamos usar FORM do html, este \u00e9 conectado a um cgi prisma enviando os dados para ele.<\/p>\n<p>H\u00e1 duas formas de enviar dados: GET e POST, n\u00e3o se preocupe logo adiante entender\u00e1 a diferen\u00e7a de ambos.<\/p>\n<p>Crie um arquivo &#8211; ex2.pri.cgi (fa\u00e7a o mesmo processo de permiss\u00e3o caso use Linux)<\/p>\n<p>Segue o c\u00f3digo:<\/p>\n<pre class=\"lang:prisma decode:true\">#!\/usr\/local\/bin\/prisma\r\n\r\n\r\nimprima'content-type: text\/html\\n\\n';\r\n\r\nimprima(\"&lt;html&gt;&lt;head&gt;&lt;title&gt;Recebendo dados&lt;\/title&gt; &lt;meta&gt;http-equiv=\\\"Content-Type\\\" content=\\\"text\/html; charset=UTF-8\\\"&gt;&lt;\/meta&gt;&lt;\/head&gt;\");\r\n\r\nimprima(\"&lt;body&gt;\");\r\n\r\nimprima[[ \r\n &lt;form action=\"http:\/\/localhost\/cgi\/ex2.pri.cgi\"&gt;\r\n&lt;label&gt;Nome: &lt;input name=\"nome\" size=\"45\"&gt;&lt;\/label&gt;&lt;br&gt;&lt;br&gt;\r\n&lt;label&gt;Sobrenome: &lt;input name=\"snome\" size=\"45\"&gt;&lt;\/label&gt;&lt;br&gt;&lt;br&gt;\r\n&lt;label&gt;Idade: &lt;input name=\"idade\" size=\"45\"&gt;&lt;\/label&gt;&lt;br&gt;&lt;br&gt;\r\n&lt;input type=\"submit\" value=\"  OK  \"&gt;\r\n&lt;\/form&gt; \r\n]]\r\n\r\ndado = sis.obtvarambiente(\"QUERY_STRING\"); \/\/pegando dos dados.\r\ndado = dado ou 'nome=';\r\nse dado &lt;&gt; 'nome=' entao \/\/se o campo estiver vazio, so o mome e igual \u00e9 retornado\r\n imprima('&lt;h1&gt;Seu dado: ' .. dado .. '&lt;\/h1&gt;');  \r\nfim\r\n\r\n\r\nimprima(\"&lt;\/body&gt;&lt;\/html&gt;\");\r\n\r\nsis.saia();<\/pre>\n<p>A novidade aqui fica por conta da tag &lt;form&gt;:<\/p>\n<pre class=\"lang:prisma decode:true\">&lt;form action=\"http:\/\/localhost\/cgi\/ex2.pri.cgi\"&gt;<\/pre>\n<p>Esta \u00e9 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\u00e3o usados para strings longas de v\u00e1rias linhas.<\/p>\n<pre class=\"lang:prisma decode:true\">&lt;label&gt;Nome: &lt;input name=\"nome\" size=\"45\"&gt;&lt;\/label&gt;&lt;br&gt;&lt;br&gt;<\/pre>\n<p>Temos aqui um r\u00f3tulo &lt;label&gt;&lt;\/label&gt; e dentro dele uma entrada de texto de linha \u00fanica &lt;input&gt;&lt;\/input&gt; note que \u00e9 com &#8216;n&#8217; antes do &#8216;p&#8217; pois vem de in (dentro) \u00a0e put (colocar), dentro da abertura dessa tag h\u00e1 algo muito importante que \u00e9 o &#8216;name&#8217;. \u00c9 pelo nome que sabemos a origem dos dados enviados ao servidor. Tem tamb\u00e9m size que \u00e9 o tamanho. O &lt;br&gt; pula uma linha.<\/p>\n<p>Logo depois temos outros inputs de texto:<\/p>\n<pre class=\"lang:prisma decode:true\">&lt;label&gt;Sobrenome: &lt;input name=\"snome\" size=\"45\"&gt;&lt;\/label&gt;&lt;br&gt;&lt;br&gt;\r\n&lt;label&gt;Idade: &lt;input name=\"idade\" size=\"45\"&gt;&lt;\/label&gt;&lt;br&gt;&lt;br&gt;<\/pre>\n<p>Entrada de textos snome e idade.<\/p>\n<pre class=\"lang:prisma decode:true\">&lt;input type=\"submit\" value=\"  OK  \"&gt;<\/pre>\n<p>Este input \u00e9 do tipo submit com bot\u00e3o. Ao pression\u00e1-lo todos os inputs de texto anteriores mandam seus dados ao servidor.<\/p>\n<pre class=\"lang:prisma decode:true\">&lt;\/form&gt;<\/pre>\n<p>aqui \u00e9 o fechamento do form<\/p>\n<pre class=\"lang:prisma decode:true\">dado = sis.obtvarambiente(\"QUERY_STRING\"); \/\/pegando dos dados.<\/pre>\n<p>\u00c9 assim que pegamos a string enviada pelo form. Ela fica armazenada temporariamente em uma vari\u00e1vel de ambiente do servidor chamada query string (string de busca). Usamos a fun\u00e7\u00e3o sis.obtvarambiente(&#8220;NOMEVAR&#8221;) para pegar seu valor.<\/p>\n<p>M\u00e9todo de envio: como n\u00e3o definimos o m\u00e9todo na tag form, o padr\u00e3o \u00e9 o GET. Para entender veja o recorte de tela:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2396 size-full\" src=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2016\/01\/urlcgi.png\" alt=\"urlcgi\" width=\"621\" height=\"47\" srcset=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2016\/01\/urlcgi.png 621w, https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2016\/01\/urlcgi-300x23.png 300w\" sizes=\"auto, (max-width: 621px) 100vw, 621px\" \/><\/p>\n<p>Observe que os dados dos inputs foram mandados pela URL ficando vis\u00edveis na barra de endere\u00e7o do navegador, isso \u00e9 o m\u00e9todo GET. Os dados s\u00e3o enviados em uma \u00fanica string com alguns c\u00f3digos especiais.<\/p>\n<p>A ordem \u00e9 essa: nome_do_input=valor_digitado_no_input&amp; ( o &amp; \u00e9 o que divide um valor de outro). Como o + e o &amp; s\u00e3o usados como caracteres especiais, se houver algum dentro do valor ele \u00e9 substitu\u00eddo por um %xx em que xx \u00e9 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 <a href=\"http:\/\/www.w3schools.com\/tags\/ref_urlencode.asp\" target=\"_blank\">&lt;aqui&gt;<\/a>\u00a0(coluna do meio).<\/p>\n<pre class=\"lang:prisma decode:true \">nome=Jos%E9&amp;snome=Silva&amp;idade=49<\/pre>\n<p>a sa\u00edda acima foi para Jos\u00e9 Silva 49 \u00a0( a letra &#8216;\u00e9&#8217; foi impressa como %E9)<\/p>\n<p>Mas como usar um dado codificado? Estou trabalhando em uma biblioteca com fun\u00e7\u00f5es web cgi em prisma, ela se chama <strong>pcgi<\/strong>\u00a0atualmente ela j\u00e1 cont\u00e9m uma fun\u00e7\u00e3o para decodificar os dados, e pegar os valores por nome.<strong> (logo irei postar e dizer como us\u00e1-la)<\/strong><\/p>\n<p>&nbsp;<\/p>\n<h1>Usando a biblioteca html.pris<\/h1>\n<p>Baixe a lib aqui: <a href=\"http:\/\/www.mediafire.com\/download\/xryghx2abfedux1\/lib_html.zip\" target=\"_blank\">Download<\/a>\u00a0e execute setup.pbrexe atrav\u00e9s do interpretador prisma, serve tanto para Linux quanto Win.<\/p>\n<p>html.pris \u00e9 uma biblioteca b\u00e1sica para facilitar a cria\u00e7\u00e3o de tags do html. Ela \u00e9 feita em c\u00f3digo fonte Prisma e portanto voc\u00ea pode modific\u00e1-la e aprimor\u00e1-la, colocando novas fun\u00e7\u00f5es.<\/p>\n<p>Vamos refazer os exemplos anteriores usando esta lib:<\/p>\n<p><em>Salve como ex3.pri.cgi | n\u00e3o se esque\u00e7a de dar permiss\u00e3o de executar no Linux.<\/em><\/p>\n<pre class=\"lang:prisma decode:true\">#!\/usr\/local\/bin\/prisma\r\nlocal html = inclua'html';\r\n\/\/para windows troque a primeira linha para: #!C:\\Prisma\\1.0\\bin\\prisma.exe\r\n\r\nhtml.tipo_html();\r\n\r\nhtml.inicie();\r\nhtml.titulo(\"Teste libhtml\");\r\nhtml.corpo();\r\nhtml.linha(7);\/\/pula 7 linhas\r\nhtml.h(1,\"Ola mundo em Prisma cgi\"); \/\/&lt;h1&gt;&lt;\/h1&gt;\r\nhtml.linha(7);\r\nhtml.finalize();\r\n\r\n<\/pre>\n<p>Detalhes:<\/p>\n<pre class=\"lang:prisma decode:true\">local html = inclua'html';<\/pre>\n<p>O trecho acima inclui as fun\u00e7\u00f5es da lib html na tabela local html. Assim podemos acessar seus m\u00e9todos.<\/p>\n<pre class=\"lang:prisma decode:true\">html.tipo_html();<\/pre>\n<p>Inicia o header type do html: &#8220;content-type: text\/html \/n\/n&#8221; necess\u00e1rio para o funcionamento do cgi.<\/p>\n<pre class=\"lang:prisma decode:true\">html.inicie();<\/pre>\n<p>Inicia o cabe\u00e7alho html: \u00a0&#8220;&lt;html&gt;&lt;head&gt;&#8221;<\/p>\n<pre class=\"lang:prisma decode:true\">html.titulo(\"Teste libhtml\");<\/pre>\n<p>Acima definimos a tag titulo: \u00a0&#8220;&lt;title&gt;Teste libhtml&lt;\/title&gt;&#8221;<\/p>\n<pre class=\"lang:prisma decode:true\">html.corpo();<\/pre>\n<p>Acima fechamos o &lt;\/head&gt; e abrimos o body: &lt;body&gt;<\/p>\n<pre class=\"lang:prisma decode:true\">html.linha(7);\/\/pula 7 linhas<\/pre>\n<p>Acima funcao linha que serve para codificar quebras de linha em html: &lt;br&gt;; O \u00fanico par\u00e2metro \u00e9 o n\u00famero de linhas que queremos pular. Padr\u00e3o \u00e9 1, caso deixe sem par\u00e2metro.<\/p>\n<pre class=\"lang:prisma decode:true\">html.h(1,\"Ola mundo em Prisma cgi\"); \/\/&lt;h1&gt;&lt;\/h1&gt;<\/pre>\n<p>Acima imprimimos um cabe\u00e7alho de t\u00edtulo 1 em html: \u00a0&#8220;&lt;h1&gt;Ola mundo em Prisma cgi&lt;\/h1&gt;&#8221;. O primeiro argumento \u00e9 o tipo de t\u00edtulo (1 a 6); o segundo \u00e9 o texto a ser impresso.<\/p>\n<pre class=\"lang:prisma decode:true\">html.finalize();<\/pre>\n<p>Este comando acima serve para fechar a tag &lt;\/body&gt; e &lt;\/html&gt; finalizando o arquivo html em cgi.<\/p>\n<p>&nbsp;<\/p>\n<p>Para ver os detalhes da biblioteca html, veja o manual de refer\u00eancia: <a href=\"https:\/\/linguagemprisma.br4.biz\/blog\/html-manual-referencia\/\" target=\"_blank\">&lt;aqui&gt;<\/a><\/p>\n<h1>Usando a lib pcgi<\/h1>\n<p><em>Baixe aqui: <a href=\"http:\/\/www.mediafire.com\/download\/60kfy8ru5n7hia5\/pcgi_install.zip\" target=\"_blank\">download<\/a>\u00a0e execute o setup.pbrexe com o interpretador prisma. Funciona no Linux ou Windows.(32bits)<\/em><\/p>\n<p>Essa lib possibilita obter as vari\u00e1veis de ambiente com fun\u00e7\u00f5es mais amig\u00e1veis, facilita na decodifica\u00e7\u00e3o e obten\u00e7\u00e3o dos m\u00e9todos GET e POST.<\/p>\n<p>Vamos refazer o segundo exemplo com o uso desta lib:<\/p>\n<pre class=\"lang:prisma decode:true\">#!\/usr\/local\/bin\/prisma\r\n\r\nlocal html = inclua'html' \/\/incluindo o modulo html.pris\r\nlocal cgi = inclua'pcgi'  \/\/incluindo o modulo pcgi.so (linux) ou pcgi.dll (win)\r\n\r\nhtml.tipo_html();\r\n\r\nhtml.inicie();\r\nhtml.titulo(\"Recebendo dados\");\r\npoe( html.tag('meta' , '' , \r\n{atrib=[[http-equiv=\"Content-Type\" content=\"text\/html; charset=UTF-8\"]]})  \r\n); \/\/criando uma tag meta;\r\n\r\nhtml.corpo();\r\n\r\nhtml.form( \"http:\/\/localhost\/cgi\/ex4.pri.cgi\" , \"GET\" );\r\nimprima[[&lt;label&gt;Nome: &lt;input name=\"nome\" size=\"45\"&gt;&lt;\/label&gt;]]\r\nhtml.linha(2); \/\/pula 2 linhas\r\n\r\nimprima('&lt;label&gt;Idade: &lt;input name=\"idade\" size=\"45\"&gt;&lt;\/label&gt;');\r\nhtml.linha(2);\r\n\r\nimprima('&lt;input type=\"submit\" value=\"  OK  \"&gt;');\r\n\r\nhtml.fimform();\r\n\r\nlocal dado = cgi.va.var_string(); \/\/recebe a vari\u00e1vel ambiente query_string\r\nlocal nome = cgi.obt_var(dado, 'nome');\/\/processa dado e retorna o valor de 'nome'\r\nlocal idade = cgi.obt_var(dado, 'idade');\r\n\r\nhtml.p( 'Nome: ' .. nome );\r\nhtml.p( 'Idade: ' .. idade);\r\n\r\nhtml.finalize();\r\n\r\nsis.saia();\r\n<\/pre>\n<p>Detalhes:<\/p>\n<pre class=\"lang:prisma decode:true\">#!\/usr\/local\/bin\/prisma<\/pre>\n<p>Caminho do interpretador prisma no servidor. Lembre-se que para Windows deve-se mudar esse caminho para:<\/p>\n<pre class=\"lang:prisma decode:true\">#!C:\\Prisma\\1.0\\bin\\prisma.exe<\/pre>\n<hr \/>\n<p>&nbsp;<\/p>\n<p>Continuando:<\/p>\n<pre class=\"lang:prisma decode:true\">local html = inclua'html' \/\/incluindo o modulo html.pris\r\nlocal cgi = inclua'pcgi'  \/\/incluindo o modulo pcgi.so (linux) ou pcgi.dll (win)\r\n<\/pre>\n<p>Incluindo as bibliotecas html e pcgi com facilidades para programa\u00e7\u00e3o web.<\/p>\n<hr \/>\n<pre class=\"lang:prisma decode:true\">html.tipo_html();\r\nhtml.inicie();\r\nhtml.titulo(\"Recebendo dados\");<\/pre>\n<p>Temos o Header (&#8216;Content-type: txt\/html \\n\\n&#8217;), iniciando o html (&lt;html&gt;&lt;head&gt;) e titulo da p\u00e1gina.<\/p>\n<hr \/>\n<p>&nbsp;<\/p>\n<pre class=\"lang:prisma decode:true\">poe( html.tag('meta' , '' , \r\n{atrib=[[http-equiv=\"Content-Type\" content=\"text\/html; charset=UTF-8\"]]})  \r\n); \/\/criando uma tag meta;<\/pre>\n<p>Acima, imprimimos com a fun\u00e7\u00e3o poe() uma tag criada com a fun\u00e7\u00e3o html.tag(). Nesta fun\u00e7\u00e3o temos:<\/p>\n<p>nome da tag: &#8216;meta&#8217;; no <strong>segundo<\/strong> par\u00e2metro deixamos uma string vazia: &#8221; pois a tag meta \u00e9 vazia. (&lt;meta&gt;&lt;\/meta&gt;); no <strong>terceiro<\/strong> par\u00e2metro temos uma tabela com o campo atrib, este campo insere seu conte\u00fado na abertura da tag, veja abaixo:<\/p>\n<pre class=\"lang:prisma decode:true\">&lt;meta http-equiv=\"Content-Type\" content=\"text\/html; charset=UTF-8\" &gt;<\/pre>\n<hr \/>\n<pre class=\"lang:prisma decode:true\">html.corpo();<\/pre>\n<p>Fechando o head e iniciando o body(corpo) do html: (&lt;\/head&gt;&lt;body&gt;);<\/p>\n<hr \/>\n<pre class=\"lang:prisma decode:true\">html.form( \"http:\/\/localhost\/cgi\/ex4.pri.cgi\" , \"GET\" );<\/pre>\n<p>Abrindo uma tag form para enviar dados ao servidor. <strong>Primeiro par\u00e2metro<\/strong> \u00e9 o action, o nome do script a ser executado ap\u00f3s o bot\u00e3o submit ser pressionado, neste caso o pr\u00f3prio script. <strong>Segundo par\u00e2metro<\/strong> \u00e9 o method (m\u00e9todo), pode ser omitido, o padr\u00e3o \u00e9 &#8220;GET&#8221;.<\/p>\n<p>Nota: Lembre-se que o m\u00e9todo &#8220;GET&#8221; manda os dados pelo url na barra de endere\u00e7os do navegador.<\/p>\n<hr \/>\n<pre class=\"lang:prisma decode:true\">imprima[[&lt;label&gt;Nome: &lt;input name=\"nome\" size=\"45\"&gt;&lt;\/label&gt;]]\r\nhtml.linha(2); \/\/pula 2 linhas\r\n\r\nimprima('&lt;label&gt;Idade: &lt;input name=\"idade\" size=\"45\"&gt;&lt;\/label&gt;');\r\nhtml.linha(2);<\/pre>\n<p>Acima temos as entradas <strong>(input)<\/strong> de texto. Muito importante definir bem o <strong>atributo name<\/strong> pois \u00e9 com ele que vamos receber cada dado corretamente. <strong>Size<\/strong> \u00e9 o tamanho (comprimento) do input. O comando html.linha(2) pula duas linhas.<\/p>\n<p><em>Obs. Como n\u00e3o criei ainda a fun\u00e7\u00e3o na lib html para criar inputs devemos imprimir normalmente a tag inteira.<\/em><\/p>\n<p><em>Obs. os valores dos atributos ap\u00f3s o sinal de igual devem estar entre apas duplas.<\/em><\/p>\n<hr \/>\n<pre class=\"lang:prisma decode:true\">imprima('&lt;input type=\"submit\" value=\"  OK  \"&gt;');<\/pre>\n<p>Criamos um bot\u00e3o de envio (submit). O type deve estar definido como &#8220;submit&#8221;. O atributo value \u00e9 o r\u00f3tulo do bot\u00e3o. Ao ser pressionado, as informa\u00e7\u00f5es do form s\u00e3o enviadas e processadas pelo script definido na tag form.<\/p>\n<hr \/>\n<p>&nbsp;<\/p>\n<pre class=\"lang:prisma decode:true\">html.fimform();<\/pre>\n<p>Este comando finaliza o form (&lt;\/form&gt;). \u00c9 muito importante, n\u00e3o se esquece dele.<\/p>\n<hr \/>\n<p>Finalmente chegamos na parte que usa as fun\u00e7\u00f5es da biblioteca pcgi:<\/p>\n<p>&nbsp;<\/p>\n<pre class=\"lang:prisma decode:true\">local dado = cgi.va.var_string(); \/\/recebe a vari\u00e1vel ambiente query_string<\/pre>\n<p>Usamos a fun\u00e7\u00e3o acima para receber os dados do form em uma \u00fanica string. Se imprimisse dado seria assim:\u00a0nome=Pedro&amp;idade=23 \u00a0 \u00a0caso seja digitado Pedro no campo nome e 23 no campo idade.<\/p>\n<hr \/>\n<pre class=\"lang:prisma decode:true\">local nome = cgi.obt_var(dado, 'nome');\/\/processa dado e retorna o valor de 'nome'\r\nlocal idade = cgi.obt_var(dado, 'idade');<\/pre>\n<p>Acima temos a fun\u00e7\u00e3o cgi.obt_var() que processa a string dado e obt\u00e9m os valores de acordo com o nome passado no segundo par\u00e2metro. No caso acima, a fun\u00e7\u00e3o procura dentro da string dado a palavra &#8220;nome&#8221; e &#8220;idade&#8221; sem aspas, se encontr\u00e1-las retorna o valor que est\u00e1 entre o &#8216;=&#8217; e o &#8216;&amp;&#8217; ou entre o &#8216;=&#8217; e o fim da string. Se nada \u00e9 encontrado o retorno \u00e9 nulo.<\/p>\n<hr \/>\n<pre class=\"lang:prisma decode:true\">html.p( 'Nome: ' .. nome );\r\nhtml.p( 'Idade: ' .. idade);<\/pre>\n<p>Enfim, imprimimos os valores atribu\u00eddos \u00e0s vari\u00e1veis nome e idade com a fun\u00e7\u00e3o html.p() que cria uma tag par\u00e1grafo.<\/p>\n<hr \/>\n<pre class=\"lang:prisma decode:true\">html.finalize();\r\nsis.saia();<\/pre>\n<p>Acima, finalizamos o html e para n\u00e3o haver nenhum problema usamos a fun\u00e7\u00e3o sis.saia();<\/p>\n<p><em>Obs. Veja que os c\u00f3digos da url s\u00e3o processados automaticamente pela fun\u00e7\u00e3o cgi.obt_var() e substitu\u00eddos pelo devido caractere.<\/em><\/p>\n<p>Para mais detalhes veja o manual de refer\u00eancia pcgi <a href=\"https:\/\/linguagemprisma.br4.biz\/blog\/pcgi-manual-referencia\/\" target=\"_blank\">&lt;clicando aqui&gt;<\/a><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; Aqui ter\u00e1 uma s\u00e9rie de dicas de como usar prisma como script cgi, rod\u00e1-lo no Xampp como \u00e9 feito com o PHP. A presente p\u00e1gina ser\u00e1 sempre que poss\u00edvel expandida com novas dicas e exemplos. &nbsp; Para come\u00e7ar instale o Xampp, se n\u00e3o sabe d\u00ea uma olhadinha aqui: &lt;instalando Xampp&gt; Provavelmente \u00a0seguindo o tutorial&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"tpl-full-width.php","meta":{"footnotes":""},"class_list":["post-2375","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/pages\/2375","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/comments?post=2375"}],"version-history":[{"count":24,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/pages\/2375\/revisions"}],"predecessor-version":[{"id":2471,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/pages\/2375\/revisions\/2471"}],"wp:attachment":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/media?parent=2375"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}