Ncleo de Educao a Distncia Curso Tcnico em Informtica para Internet Introduo Programao para Internet (Curso Tcnico em Informtica para Internet) Prof. Bruno B. Boniati
Aula 2 - Mtodos de Envio de Dados: POST x GET
Em nossa aula anterior voc comeou a entender que as aplicaes e tecnologias web podem ser basicamente de dois tipos: client side (quando so executadas no navegador do usurio) ou server side (quando so executadas no servidor). Voc tambm j deve estar sabendo que o objetivo dessa nossa disciplina de introduzi-lo programao no lado do servidor, ou seja server side. Pois bem, se voc realizou as atividades propostas at aqui deve ter percebido que para testar um programa do tipo server side, feito em PHP, por exemplo, necessrio que tenhamos um servidor instalado em nosso computador ou ento que nosso cdigo seja transferido para um servidor web. Ento fica uma pergunta: como que os usurios interagem com uma aplicao que est sendo executada em um servidor? Como, por exemplo, que a aplicao poderia perguntar ao usurio qual o ano que ele nasceu para calcular a idade dele? A resposta para essas perguntas a passagem de parmetros. Ou seja... uma aplicao do lado do servidor ela no tem uma tela onde o usurio digita os dados. Ela apenas recebe requisies parmetros e produz uma sada que interpretada pelo navegador. Vamos tentar fazer uma pequena aplicao em PHP para calcular a mdia de duas notas, ok? Para isso o usurio vai ter que digitar 2 notas, as notas devero ser somadas e depois divididas por 2, correto? Pois bem, o problema j comea na primeira frase: o usurio vai ter que digitar duas notas. No temos como fazer isso em uma aplicao servidora, pois no estamos sentados na frente do computador servidor para digitar em seu teclado as notas. Podemos estar a quilmetros de distncia do servidor e para tanto vamos precisar lhe enviar as notas, ao invs de digit-las diretamente na aplicao. Mas como isso feito? Existem duas formas de se enviar informaes para uma aplicao servidora: utilizando-se de um formulrio HTML ou ento digitando diretamente na URL. Vamos exemplificar as duas formas, comeando pela primeira. Observe no cdigo abaixo um formulrio HTML que contm dois campos de texto (input type=text): nota1 e nota2 e um boto de submisso (input type=submit). O resultado do cdigo pode ser visto ao lado.
Universidade Federal de Santa Maria Colgio Agrcola de Frederico Westphalen Ncleo de Educao a Distncia Curso Tcnico em Informtica para Internet Introduo Programao para Internet (Curso Tcnico em Informtica para Internet) Prof. Bruno B. Boniati
O que vai acontecer quando o usurio clicar no boto Enviar? Neste caso os dados (nota1 e nota2) sero empacotados e enviados para uma aplicao chamada calcular.php (que o action do formulrio). E agora o que acontece quando trocamos o mtodo (method) de POST para GET. O browser vai fazer a mesma coisa, porm ao invs de empacotar os dados, ele vai envi-los atravs da URL. Faa um teste e veja voc mesmo:
Voc consegue identificar na URL as informaes que estavam na pgina HTML?
Vamos decompor a URL:
A primeira parte (http://localhost:8080/teste/calcular.php) o ACTION do formulrio, concorda? o nome do programa que vai ser chamado quando o boto de submisso for chamado. Depois h um ponto de interrogao (?), voc consegue identifica-lo? Este ponto de interrogao utilizado para separar a aplicao (action) dos seus parmetros. Em seguida podemos visualizar os parmetros (inputs) e seus valores, veja: nota1=75¬a2=63&Enviar=Enviar (veja que o smbolo de & utilizado para separ-los): nota1=75 nota2=63 Enviar=Enviar
Ento resumindo: quando usamos o mtodo de envio POST os parmetros so enviados de forma escondida (empacotada) e quando utilizamos o mtodo GET os dados so enviados junto com a URL. Pegou a ideia?
Estes dias fiz uma compra pela internet e a empresa me enviou um link por e-mail para mim rastrear o meu pedido, veja o que dizia o link:
Eu pergunto: neste caso os Correios esto usando POST ou GET? Se voc respondeu GET acertou, pois os parmetros esto sendo passados pela URL. E quais so os parmetros que esto sendo passados? A resposta a essa pergunta : P_LINGUA (001), P_TIPO (001) e P_COD_UNI (JL793267904BR).
Universidade Federal de Santa Maria Colgio Agrcola de Frederico Westphalen Ncleo de Educao a Distncia Curso Tcnico em Informtica para Internet Introduo Programao para Internet (Curso Tcnico em Informtica para Internet) Prof. Bruno B. Boniati
Mas como que uma aplicao PHP recebe os dados enviados de uma pgina HTML?
bastante simples, toda aplicao PHP contm duas listas chamadas de $_GET e $_POST (os nomes so meio esquisitos, mas isso mesmo). Vamos fazer abaixo uma aplicao PHP que recebe as notas (nota1 e nota2), calcula e mostra a mdia. No cdigo da esquerda a aplicao foi feita esperando os parmetros pelo mtodo POST e no cdigo da direita os parmetros so pegos pelo mtodo GET.
POST GET
Parece um jogo de 7 erros, n? Mas na verdade s h 2 linhas diferentes (trocando $_POST por $_GET).
Acabamos no conversando muito sobre o PHP n? Mas isso assunto para nossas prximas aulas. Um detalhe importante que voc deve observar, caso queira se aventurar pelo PHP que todas as variveis em PHP comeam com o smbolo de $ (cifro) e outro detalhe que o cdigo PHP pode ser colocado dentro do cdigo HTML. Neste caso voc deve utilizar as tags: <?php e ?> para indicar ao servidor web que este contedo deve ser processado pelo mesmo e no simplesmente retornado ao usurio. Mas o PHP assunto da nossa prxima semana, por enquanto concentre-se em entender bem o que passar um parmetro por GET e por POST.
Para avaliar o seu aprendizado nessa semana, preparamos trs atividades: na primeira delas voc vai precisar construir um formulrio HTML para enviar a sua matricula para uma aplicao web que vai te fazer uma charada. A charada nica para cada aluno e queremos saber se voc consegue descobrir qual a sua. Neste caso voc vai utilizar o mtodo POST (se usar o mtodo GET no vai funcionar). A segunda tarefa consiste em utilizar o mtodo GET para adivinhar um nmero que sorteamos para voc. O nmero vai de 1 at 1000 e voc pode utilizar tantas tentativas quanto precisar. Ao final nos diga qual foi nmero sorteado e nos envie a URL que voc utilizou para descobri-lo. Universidade Federal de Santa Maria Colgio Agrcola de Frederico Westphalen Ncleo de Educao a Distncia Curso Tcnico em Informtica para Internet Introduo Programao para Internet (Curso Tcnico em Informtica para Internet) Prof. Bruno B. Boniati
Por fim, a ltima tarefa uma reflexo sobre as duas primeiras: afinal, o que voc entendeu sobre passagem de parmetros e qual a diferena de GET e POST?
Nas prximas aulas entraremos em detalhes sobre o funcionamento da linguagem PHP e para fazer o mais simples dos programas vamos precisar passar parmetros. muito importante que voc esteja entendendo estes conceitos e sua utilizao na prtica. Para essa semana separamos um vdeo produzido pelo canal Discovery Chanel que fala sobre a histria da internet. O primeiro episdio fala sobre a Guerra dos Browsers, se possvel, tire um tempo para assisti-lo. Se tiver dificuldades ou algo no ficou claro o suficiente, no deixe de fazer contato, teremos o maior prazer em ajud-lo. Desejamos a voc uma tima semana.