+5

Introdução ao PHP

criado por João Prado Maia em 25/01/2001 6:32pm
<span class=\"mysql\"><br>
02. Enviando Dados para o Servidor HTTP </span>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">Programar para a web pode ser considerado como
um jogo que consiste em receber os dados do usu&aacute;rio, process&aacute;-los
e enviar a resposta din&acirc;mica. Uma vez enviada a resposta,
&eacute; encerrado o contato entre o servidor e o cliente. Portanto
a primeira coisa a aprender &eacute; como fazer para receber os
dados enviados pelo browser para o servidor. </p>
<p align=\"JUSTIFY\">O protocolo HTTP prov&ecirc; dois principais m&eacute;todos
para enviar informa&ccedil;&otilde;es para o servidor web, al&eacute;m
da URL referente ao arquivo solicitado. Esses m&eacute;todos s&atilde;o
o POST e o GET.</p>
<p align=\"JUSTIFY\">O protocolo HTTP/1.0 tamb&eacute;m especifica o
m&eacute;todo HEAD, utilizado apenas para transmitir informa&ccedil;&otilde;es
do header, al&eacute;m dos m&eacute;todos PUT e DELETE, que n&atilde;o
ser&atilde;o abordados neste curso.</p>
<p align=\"JUSTIFY\">O m&eacute;todo GET</p>
<p align=\"JUSTIFY\">A especifica&ccedil;&atilde;o do protocolo HTTP/0.9
(a primeira implementa&ccedil;&atilde;o do HTTP) possu&iacute;a
a defini&ccedil;&atilde;o do m&eacute;todo GET, utilizado pelo browser
para solicitar um documento espec&iacute;fico.</p>
<p align=\"JUSTIFY\">Por exemplo: a seguinte requisi&ccedil;&atilde;o
HTTP retornaria o documento \"index.html\", localizado no diret&oacute;rio
do servidro chamado &quot;teste&quot;:</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"><span class=\"mysql\">GET /teste/index.html CRLF</span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">Devemos notar que a requisi&ccedil;&atilde;o GET
inicia com a palavra GET, inclui o documento solicitado e encerra
com a combina&ccedil;&atilde;o dos caracteres carriage return
e line feed. </p>
<p align=\"JUSTIFY\">Para um melhor entendimento, voc&ecirc; pode fazer
uma requisi&ccedil;&atilde;o GET conectando diretamente em algum
servidor WEB, conectando atrav&eacute;s de um programa de telnet
(geralmente o servidor http utiliza a porta 80). A resposta ser&aacute;
o c&oacute;digo da p&aacute;gina solicitada.</p>
<p align=\"JUSTIFY\"><span class=\"mysql\">telnet www.guia-aju.com.br
80<br>
</span><span class=\"mysql\">Trying 200.241.59.16...<br>
</span><span class=\"mysql\">Connected to www.guia-aju.com.br.<br>
</span><span class=\"mysql\">Escape character is \'^]\'.<br>
</span><span class=\"mysql\">GET /index.php3<br>
</span><span class=\"mysql\">(... p&aacute;gina solicitada ...)<br>
</span><span class=\"mysql\">Connection closed by foreign host.</span></p>
<p align=\"JUSTIFY\">Obviamente a diferen&ccedil;a do browser &eacute;
que ele trata as informa&ccedil;&otilde;es recebidas e exibe a p&aacute;gina
j&aacute; formatada.</p>
<p align=\"JUSTIFY\">Atrav&eacute;s do m&eacute;todo GET tamb&eacute;m
&eacute; poss&iacute;vel passar par&acirc;metros da requisi&ccedil;&atilde;o
ao servidor, que pode tratar esses valores e at&eacute; alterar
a resposta a depender deles, como no exemplo abaixo:</p>
<p align=\"JUSTIFY\"><span class=\"mysql\">telnet www.guia-aju.com.br
80<br>
</span><span class=\"mysql\">Trying 200.241.59.16...<br>
</span><span class=\"mysql\">Connected to www.guia-aju.com.br.<br>
</span><span class=\"mysql\">Escape character is \'^]\'.<br>
</span><span class=\"mysql\">GET /index.php3?id=0024horas&amp;tipo=Taxi<br>
</span><span class=\"mysql\">(... p&aacute;gina solicitada ...)<br>
</span><span class=\"mysql\">Connection closed by foreign host.</span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">No exemplo s&atilde;o passados dois par&acirc;metros:
id e tipo. Esses par&acirc;metros est&atilde;o no formato conhecido
por URLencode, que &eacute; detalhado no cap&iacute;tulo 09.</p>
<p align=\"JUSTIFY\">Apesar de ser poss&iacute;vel passar par&acirc;metros
utilizando o m&eacute;todo GET, e com isso gerar p&aacute;ginas
dinamicamente, este m&eacute;todo tem pelo menos dois problemas
que em determinadas circunst&acirc;ncias podem ser considerados
s&eacute;rios:</p>
<p align=\"JUSTIFY\">O primeiro &eacute; que o GET permite uma quantidade
de dados passados limitada a 1024 caracteres, o que pode gerar perda
de informa&ccedil;&otilde;es em certos casos.</p>
<p align=\"JUSTIFY\">O segundo &eacute; que pelo fato de que as informa&ccedil;&otilde;es
fazem parte da URL, todos os dados podem ser vistos pelo usu&aacute;rio.
Isso pode ser extremamente perigoso quando informa&ccedil;&otilde;es
sigilosas est&atilde;o envolvidas (senha, por exemplo).</p>
<p align=\"JUSTIFY\">&nbsp;</p>
<p align=\"JUSTIFY\">Headers</p>
<p align=\"JUSTIFY\">A vers&atilde;o 1.0 do protocolo HTTP trouxe boas
inova&ccedil;&otilde;es ao mesmo. Uma delas foi a cria&ccedil;&atilde;o
de headers nas mensagens de requisi&ccedil;&atilde;o e de resposta.
Os headers s&atilde;o informa&ccedil;&otilde;es trocadas entre o
navegador e o servidor de maneira transparente ao usu&aacute;rio,
e podem conter dados sobre o tipo e a vers&atilde;o do navegador,
a p&aacute;gina de onde partiu a requisi&ccedil;&atilde;o (link),
os tipos de arquivos aceitos como resposta, e uma s&eacute;rie de
outras informa&ccedil;&otilde;es.</p>
<p align=\"JUSTIFY\">Assim foi poss&iacute;vel definir um outro m&eacute;todo
de requisi&ccedil;&atilde;o de arquivos, que resolveu os principais
problemas do m&eacute;todo GET.</p>
<p align=\"JUSTIFY\">&nbsp;</p>
<p align=\"JUSTIFY\">O m&eacute;todo POST</p>
<p align=\"JUSTIFY\">Atrav&eacute;s da utiliza&ccedil;&atilde;o de headers
&eacute; poss&iacute;vel enviar os par&acirc;metros da URL solicitada
sem expor esses dados ao usu&aacute;rio, e tamb&eacute;m sem haver
um limite de tamanho.</p>
<p align=\"JUSTIFY\">Uma conex&atilde;o ao servidor HTTP utilizando
o m&eacute;todo POST seria algo semelhante ao que segue:</p>
<p align=\"JUSTIFY\"><span class=\"mysql\">telnet www.guia-aju.com.br
80<br>
</span><span class=\"mysql\">Trying 200.241.59.16...<br>
</span><span class=\"mysql\">Connected to www.guia-aju.com.br.<br>
</span><span class=\"mysql\">Escape character is \'^]\'.<br>
</span><span class=\"mysql\">POST /index.php3<br>
</span><span class=\"mysql\">Accept */*<br>
</span><span class=\"mysql\">Content-type: application/x-www-form-urlencoded<br>
</span><span class=\"mysql\">Content-length:22<br>
</span><span class=\"mysql\">id=0024horas&amp;tipo=Taxi<br>
</span><span class=\"mysql\">(... p&aacute;gina solicitada ...)<br>
</span><span class=\"mysql\">Connection closed by foreign host.</span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">Devemos observar os headers enviados ao servidor:
a linha &quot;Accept&quot; informa os tipos de dados que podem ser
enviados como resposta (no caso, todos). A linha &quot;Content-type&quot;
informa o tipo de dado que est&aacute; sendo enviado (urlencoded).
O terceiro header &eacute; o mais importante pois informa o tamanho
do corpo da mensagem, que cont&eacute;m os par&acirc;metros. Ap&oacute;s
todos os headers h&aacute; um salto de linha e ent&atilde;o &eacute;
iniciado o corpo da mensagem, no formato urlencoded.</p>
<p align=\"JUSTIFY\">Obviamente o usu&aacute;rio n&atilde;o deve se
preocupar com os headers, em codificar os dados ou em calcular o
tamanho do corpo da mensagem. O browser faz isso de maneira transparente.</p>
<p align=\"JUSTIFY\">&nbsp;</p>
<p align=\"JUSTIFY\">Utilizando GET e POST</p>
<p align=\"JUSTIFY\">O m&eacute;todo GET pode ser utilizado atrav&eacute;s
da digita&ccedil;&atilde;o de um endere&ccedil;o no local apropriado
do navegador ou atrav&eacute;s de um hiperlink, ou seja, uma refer&ecirc;ncia
de uma p&aacute;gina a outra. Nesses casos &eacute; preciso converter
os dados para o formato urlencode. A terceira maneira de utilizar
o GET &eacute; atrav&eacute;s de formul&aacute;rios HTML, e neste
caso o usu&aacute;rio n&atilde;o precisa se preocupar com a codifica&ccedil;&atilde;o
dos dados. A utiliza&ccedil;&atilde;o de formul&aacute;rios HTML
&eacute; a &uacute;nica maneira poss&iacute;vel de submeter dados
pelo m&eacute;todo POST.</p>

Comentários:

Mostrando 1 - 10 de 19 comentários
Alguem descobriu onde baixar esse tutorial???
02/09/2008 8:57am (~12 anos atrás)

Como baixar o tutorial ?
24/05/2008 2:56pm (~12 anos atrás)

João Santos disse:
como baixo o tutorial?

obrigado
30/03/2008 8:16am (~12 anos atrás)

Estou procurando a dias esse arquivos PDF com as imagens, pois não estou encontrando o arquivo completo, quero imprimir isso.

Obriado.
28/06/2007 5:30am (~13 anos atrás)

Cyrus disse:
01/06/2006 5:22am (~14 anos atrás)


tentei no passado aprender por apostila,
mais livros ajudar muito ,em especial aquele que envolver o leitor num projeto.
esse tipo de trabalho ou livro são excelente ajuda : mais legal pela iniciativa
25/11/2005 10:32am (~15 anos atrás)

Legal colega - me ajudou muito !
28/09/2005 6:29pm (~15 anos atrás)

As imagens não estão aparecendo e tentei acessar o site do autor, mas também não funciona.
Alguém tem disponível para download?
24/06/2005 7:06pm (~15 anos atrás)

dizem q a primeira impreção é a q fica,
axei bastante intuitivo.
:)
24/04/2005 11:56pm (~15 anos atrás)

Galera, quem estiver afim de baixar o tutorial é só acessar o seguinte link
http://www.helo.tato.nom.br/arquivos/apostilaphp_mv.pdf

Té +
11/03/2005 7:31pm (~15 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)