Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
Ambos lados da revisão anterior Revisão anterior Próxima revisão | Revisão anterior | ||
espec:paginas_dinamicas [2008/06/13 21:56] – maziero | espec:paginas_dinamicas [2012/04/25 22:42] (atual) – maziero | ||
---|---|---|---|
Linha 1: | Linha 1: | ||
+ | ====== Páginas Dinâmicas ====== | ||
+ | |||
+ | As páginas WWW estáticas são documentos em formato HTML armazenados no servidor, como [[http:// | ||
+ | |||
+ | <code html> | ||
+ | < | ||
+ | |||
+ | < | ||
+ | < | ||
+ | Este & | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | Este & | ||
+ | que pode ter diversas formata& | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | </ | ||
+ | |||
+ | As páginas estáticas podem conter imagens, sons, animações e outros elementos. Todavia, como seu próprio nome diz, seu conteúdo de informação é estático e sua atualização depende de intervenção manual. Um sistema assim pode ser considerado um sistema // | ||
+ | |||
+ | A seguir veremos mecanismos que permitem gerar páginas com conteúdo dinâmico, ou seja, que pode mudar automaticamente. Nesse caso, o sistema passa a ser caracterizado com um sistema // | ||
+ | |||
+ | ===== Programas CGI ===== | ||
+ | |||
+ | O método mais antigo e simples para prover informação dinâmica na WWW é o uso do mecanismo de programas CGI - //Common Gateway Interface// | ||
+ | |||
+ | A configuração default do servidor Apache somente permite a execução de CGIs presentes no diretório | ||
+ | ''/ | ||
+ | outros diretórios, | ||
+ | |||
+ | Um exemplo bastante simples de programa CGI (escrito em shell script) pode ser visto [[http:// | ||
+ | |||
+ | <code bash> | ||
+ | #!/bin/sh | ||
+ | |||
+ | echo " | ||
+ | echo "" | ||
+ | |||
+ | echo -n "Data atual neste servidor: " | ||
+ | date | ||
+ | </ | ||
+ | |||
+ | Aqui temos [[http:// | ||
+ | |||
+ | <code bash> | ||
+ | #!/bin/sh | ||
+ | |||
+ | echo " | ||
+ | echo "" | ||
+ | |||
+ | echo "< | ||
+ | echo "< | ||
+ | echo "< | ||
+ | echo "</ | ||
+ | |||
+ | echo "< | ||
+ | |||
+ | echo "As variáveis de ambiente estão acessíveis ao usuário:" | ||
+ | |||
+ | echo "< | ||
+ | echo "< | ||
+ | echo "< | ||
+ | echo "< | ||
+ | echo "</ | ||
+ | |||
+ | echo "Esta abordagem somente deve ser usada em < | ||
+ | |||
+ | echo "</ | ||
+ | echo "</ | ||
+ | </ | ||
+ | |||
+ | É possível a criação de CGIs simples com scripts shell, ou mesmo com programas C/C++, mas essas linguagens não se prestam à construção de CGIs que devam retornar código HTML, pois a construção do mesmo via shell scripts ou programas C é penosa e pouco eficiente. Para tal objetivo costumam ser usadas linguagens apropriadas para tratamento de strings, como Perl ou Python. | ||
+ | |||
+ | Eis um exemplo de [[http:// | ||
+ | |||
+ | <code perl> | ||
+ | # | ||
+ | |||
+ | # cabecalho HTTP | ||
+ | print " | ||
+ | |||
+ | # inicio do documento HTML | ||
+ | print "< | ||
+ | < | ||
+ | |||
+ | < | ||
+ | < | ||
+ | "; | ||
+ | |||
+ | # obtem a situação dos discos locais | ||
+ | @lista = `df` ; | ||
+ | |||
+ | # abertura de tabela | ||
+ | print "< | ||
+ | |||
+ | # gera entradas de tabela para as linhas | ||
+ | foreach $line ( @lista ) | ||
+ | { | ||
+ | ($fs, $bks, $used, $avail, $perc, $mount) = split ( /\s+/, $line) ; | ||
+ | print "< | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </TR> | ||
+ | "; | ||
+ | } | ||
+ | |||
+ | # fechamento de tabela | ||
+ | print "</ | ||
+ | |||
+ | # fim do documento HTML | ||
+ | print "</ | ||
+ | </ | ||
+ | |||
+ | Resumindo, programas CGI são códigos executáveis lançados pelo servidor WWW como processos separados, cujo resultado da execução (saídas geradas em '' | ||
+ | |||
+ | ===== Páginas ativas ===== | ||
+ | |||
+ | Outra forma de gerar conteúdo dinâmico na Web é através do uso de páginas ativas. Neste caso, o documento HTML contém tags especiais definindo instruções executáveis. Essas instruções são executadas pelo servidor WWW no momento da consulta, e o resultado da execução é inserido na página Web e devolvido ao cliente. Atualmente as linguagens para páginas ativas em uso mais freqüentes são: | ||
+ | |||
+ | * PHP: de domínio públio, executa em qualquer plataforma. | ||
+ | * ASP: proprietária, | ||
+ | * JSP: baseada em Java, pode executar na maioria dos ambientes. | ||
+ | |||
+ | A discussão sobre as qualidades e defeitos dessas linguagens foge ao escopo desta aula. Além das duas linguagens acima, existem outras possibilidades, | ||
+ | |||
+ | Um [[http:// | ||
+ | |||
+ | <code php> | ||
+ | < | ||
+ | < | ||
+ | |||
+ | <? | ||
+ | $IP = getenv(" | ||
+ | echo "Olá usuário em $IP, tudo bem?" ; | ||
+ | ?> | ||
+ | |||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | O código indicado em azul é identificado por tags especiais (''<?'' | ||
+ | |||
+ | <code php> | ||
+ | <? | ||
+ | // Exemplo de criação de imagem | ||
+ | |||
+ | // aloca uma área de memória para uma imagem 200x200 | ||
+ | $im = ImageCreate (200, 200); | ||
+ | |||
+ | // define cores para usar na imagem | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | // Desenha alguns retangulos aleatorios na tela | ||
+ | srand ((double) microtime() * 1000000); | ||
+ | |||
+ | $x = rand (0,100) ; | ||
+ | $y = rand (0,100) ; | ||
+ | | ||
+ | |||
+ | $x = rand (0,100) ; | ||
+ | $y = rand (0,100) ; | ||
+ | | ||
+ | |||
+ | $x = rand (0,100) ; | ||
+ | $y = rand (0,100) ; | ||
+ | | ||
+ | |||
+ | // cria um arquivo em disco com a imagem " | ||
+ | | ||
+ | |||
+ | // desaloca a memória utilizada para manipular a imagem | ||
+ | | ||
+ | ?> | ||
+ | |||
+ | < | ||
+ | |||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | <body bgcolor = "# | ||
+ | |||
+ | <img align=" | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Outro exemplo de geração de conteúdo dinâmico é [[http:// | ||
+ | |||
+ | Ao invés de gerar imagens, o código PHP poderia buscar informações em um servidor de bancos de dados. Dessa forma, o código PHP pode ser considerado o " | ||
+ | |||
+ | <code php> | ||
+ | < | ||
+ | < | ||
+ | |||
+ | <? | ||
+ | // variáveis usadas na conexão ao DBMS | ||
+ | $host = " | ||
+ | $user = " | ||
+ | $pwd = " | ||
+ | $base = " | ||
+ | $table = " | ||
+ | |||
+ | // estabelecer conexão com o DBMS | ||
+ | mysql_connect($host, | ||
+ | OR die (" | ||
+ | |||
+ | // selecionar uma base de dados | ||
+ | mysql_select_db( " | ||
+ | OR die( " | ||
+ | |||
+ | // seleciona todos os usuários cadastrados | ||
+ | $query = " | ||
+ | $result = mysql_query($query); | ||
+ | |||
+ | // quantas entradas temos no resultado ? | ||
+ | $number = mysql_numrows($result); | ||
+ | |||
+ | // gerar uma saida formatada | ||
+ | if ($number == 0) : | ||
+ | ?> | ||
+ | |||
+ | < | ||
+ | |||
+ | <? else : ?> | ||
+ | |||
+ | < | ||
+ | |||
+ | <table border=1> | ||
+ | <tr bgcolor="# | ||
+ | < | ||
+ | < | ||
+ | |||
+ | <? for ($i=0; $i < $number; $i++): | ||
+ | $reg = mysql_fetch_array ($result) ; | ||
+ | ?> | ||
+ | |||
+ | <tr> | ||
+ | <td> <? echo $reg[" | ||
+ | <td> <? echo $reg[" | ||
+ | <td> <? echo $reg[" | ||
+ | </tr> | ||
+ | |||
+ | <? endfor; | ||
+ | ?> | ||
+ | |||
+ | </ | ||
+ | |||
+ | <? endif; | ||
+ | ?> | ||
+ | |||
+ | </ | ||
+ | </ | ||
+ | </ | ||