Introdução ao PHP
<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ário, processá-los
e enviar a resposta dinâmica. Uma vez enviada a resposta,
é encerrado o contato entre o servidor e o cliente. Portanto
a primeira coisa a aprender é como fazer para receber os
dados enviados pelo browser para o servidor. </p>
<p align=\"JUSTIFY\">O protocolo HTTP provê dois principais métodos
para enviar informações para o servidor web, além
da URL referente ao arquivo solicitado. Esses métodos são
o POST e o GET.</p>
<p align=\"JUSTIFY\">O protocolo HTTP/1.0 também especifica o
método HEAD, utilizado apenas para transmitir informações
do header, além dos métodos PUT e DELETE, que não
serão abordados neste curso.</p>
<p align=\"JUSTIFY\">O método GET</p>
<p align=\"JUSTIFY\">A especificação do protocolo HTTP/0.9
(a primeira implementação do HTTP) possuía
a definição do método GET, utilizado pelo browser
para solicitar um documento específico.</p>
<p align=\"JUSTIFY\">Por exemplo: a seguinte requisição
HTTP retornaria o documento \"index.html\", localizado no diretório
do servidro chamado "teste":</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ção GET
inicia com a palavra GET, inclui o documento solicitado e encerra
com a combinação dos caracteres carriage return
e line feed. </p>
<p align=\"JUSTIFY\">Para um melhor entendimento, você pode fazer
uma requisição GET conectando diretamente em algum
servidor WEB, conectando através de um programa de telnet
(geralmente o servidor http utiliza a porta 80). A resposta será
o código da pá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ágina solicitada ...)<br>
</span><span class=\"mysql\">Connection closed by foreign host.</span></p>
<p align=\"JUSTIFY\">Obviamente a diferença do browser é
que ele trata as informações recebidas e exibe a página
já formatada.</p>
<p align=\"JUSTIFY\">Através do método GET também
é possível passar parâmetros da requisição
ao servidor, que pode tratar esses valores e até 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&tipo=Taxi<br>
</span><span class=\"mysql\">(... página solicitada ...)<br>
</span><span class=\"mysql\">Connection closed by foreign host.</span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">No exemplo são passados dois parâmetros:
id e tipo. Esses parâmetros estão no formato conhecido
por URLencode, que é detalhado no capítulo 09.</p>
<p align=\"JUSTIFY\">Apesar de ser possível passar parâmetros
utilizando o método GET, e com isso gerar páginas
dinamicamente, este método tem pelo menos dois problemas
que em determinadas circunstâncias podem ser considerados
sérios:</p>
<p align=\"JUSTIFY\">O primeiro é que o GET permite uma quantidade
de dados passados limitada a 1024 caracteres, o que pode gerar perda
de informações em certos casos.</p>
<p align=\"JUSTIFY\">O segundo é que pelo fato de que as informações
fazem parte da URL, todos os dados podem ser vistos pelo usuário.
Isso pode ser extremamente perigoso quando informações
sigilosas estão envolvidas (senha, por exemplo).</p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\">Headers</p>
<p align=\"JUSTIFY\">A versão 1.0 do protocolo HTTP trouxe boas
inovações ao mesmo. Uma delas foi a criação
de headers nas mensagens de requisição e de resposta.
Os headers são informações trocadas entre o
navegador e o servidor de maneira transparente ao usuário,
e podem conter dados sobre o tipo e a versão do navegador,
a página de onde partiu a requisição (link),
os tipos de arquivos aceitos como resposta, e uma série de
outras informações.</p>
<p align=\"JUSTIFY\">Assim foi possível definir um outro método
de requisição de arquivos, que resolveu os principais
problemas do método GET.</p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\">O método POST</p>
<p align=\"JUSTIFY\">Através da utilização de headers
é possível enviar os parâmetros da URL solicitada
sem expor esses dados ao usuário, e também sem haver
um limite de tamanho.</p>
<p align=\"JUSTIFY\">Uma conexão ao servidor HTTP utilizando
o mé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&tipo=Taxi<br>
</span><span class=\"mysql\">(... pá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 "Accept" informa os tipos de dados que podem ser
enviados como resposta (no caso, todos). A linha "Content-type"
informa o tipo de dado que está sendo enviado (urlencoded).
O terceiro header é o mais importante pois informa o tamanho
do corpo da mensagem, que contém os parâmetros. Após
todos os headers há um salto de linha e então é
iniciado o corpo da mensagem, no formato urlencoded.</p>
<p align=\"JUSTIFY\">Obviamente o usuário nã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\"> </p>
<p align=\"JUSTIFY\">Utilizando GET e POST</p>
<p align=\"JUSTIFY\">O método GET pode ser utilizado através
da digitação de um endereço no local apropriado
do navegador ou através de um hiperlink, ou seja, uma referência
de uma página a outra. Nesses casos é preciso converter
os dados para o formato urlencode. A terceira maneira de utilizar
o GET é através de formulários HTML, e neste
caso o usuário não precisa se preocupar com a codificação
dos dados. A utilização de formulários HTML
é a única maneira possível de submeter dados
pelo método POST.</p>
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ário, processá-los
e enviar a resposta dinâmica. Uma vez enviada a resposta,
é encerrado o contato entre o servidor e o cliente. Portanto
a primeira coisa a aprender é como fazer para receber os
dados enviados pelo browser para o servidor. </p>
<p align=\"JUSTIFY\">O protocolo HTTP provê dois principais métodos
para enviar informações para o servidor web, além
da URL referente ao arquivo solicitado. Esses métodos são
o POST e o GET.</p>
<p align=\"JUSTIFY\">O protocolo HTTP/1.0 também especifica o
método HEAD, utilizado apenas para transmitir informações
do header, além dos métodos PUT e DELETE, que não
serão abordados neste curso.</p>
<p align=\"JUSTIFY\">O método GET</p>
<p align=\"JUSTIFY\">A especificação do protocolo HTTP/0.9
(a primeira implementação do HTTP) possuía
a definição do método GET, utilizado pelo browser
para solicitar um documento específico.</p>
<p align=\"JUSTIFY\">Por exemplo: a seguinte requisição
HTTP retornaria o documento \"index.html\", localizado no diretório
do servidro chamado "teste":</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ção GET
inicia com a palavra GET, inclui o documento solicitado e encerra
com a combinação dos caracteres carriage return
e line feed. </p>
<p align=\"JUSTIFY\">Para um melhor entendimento, você pode fazer
uma requisição GET conectando diretamente em algum
servidor WEB, conectando através de um programa de telnet
(geralmente o servidor http utiliza a porta 80). A resposta será
o código da pá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ágina solicitada ...)<br>
</span><span class=\"mysql\">Connection closed by foreign host.</span></p>
<p align=\"JUSTIFY\">Obviamente a diferença do browser é
que ele trata as informações recebidas e exibe a página
já formatada.</p>
<p align=\"JUSTIFY\">Através do método GET também
é possível passar parâmetros da requisição
ao servidor, que pode tratar esses valores e até 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&tipo=Taxi<br>
</span><span class=\"mysql\">(... página solicitada ...)<br>
</span><span class=\"mysql\">Connection closed by foreign host.</span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">No exemplo são passados dois parâmetros:
id e tipo. Esses parâmetros estão no formato conhecido
por URLencode, que é detalhado no capítulo 09.</p>
<p align=\"JUSTIFY\">Apesar de ser possível passar parâmetros
utilizando o método GET, e com isso gerar páginas
dinamicamente, este método tem pelo menos dois problemas
que em determinadas circunstâncias podem ser considerados
sérios:</p>
<p align=\"JUSTIFY\">O primeiro é que o GET permite uma quantidade
de dados passados limitada a 1024 caracteres, o que pode gerar perda
de informações em certos casos.</p>
<p align=\"JUSTIFY\">O segundo é que pelo fato de que as informações
fazem parte da URL, todos os dados podem ser vistos pelo usuário.
Isso pode ser extremamente perigoso quando informações
sigilosas estão envolvidas (senha, por exemplo).</p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\">Headers</p>
<p align=\"JUSTIFY\">A versão 1.0 do protocolo HTTP trouxe boas
inovações ao mesmo. Uma delas foi a criação
de headers nas mensagens de requisição e de resposta.
Os headers são informações trocadas entre o
navegador e o servidor de maneira transparente ao usuário,
e podem conter dados sobre o tipo e a versão do navegador,
a página de onde partiu a requisição (link),
os tipos de arquivos aceitos como resposta, e uma série de
outras informações.</p>
<p align=\"JUSTIFY\">Assim foi possível definir um outro método
de requisição de arquivos, que resolveu os principais
problemas do método GET.</p>
<p align=\"JUSTIFY\"> </p>
<p align=\"JUSTIFY\">O método POST</p>
<p align=\"JUSTIFY\">Através da utilização de headers
é possível enviar os parâmetros da URL solicitada
sem expor esses dados ao usuário, e também sem haver
um limite de tamanho.</p>
<p align=\"JUSTIFY\">Uma conexão ao servidor HTTP utilizando
o mé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&tipo=Taxi<br>
</span><span class=\"mysql\">(... pá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 "Accept" informa os tipos de dados que podem ser
enviados como resposta (no caso, todos). A linha "Content-type"
informa o tipo de dado que está sendo enviado (urlencoded).
O terceiro header é o mais importante pois informa o tamanho
do corpo da mensagem, que contém os parâmetros. Após
todos os headers há um salto de linha e então é
iniciado o corpo da mensagem, no formato urlencoded.</p>
<p align=\"JUSTIFY\">Obviamente o usuário nã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\"> </p>
<p align=\"JUSTIFY\">Utilizando GET e POST</p>
<p align=\"JUSTIFY\">O método GET pode ser utilizado através
da digitação de um endereço no local apropriado
do navegador ou através de um hiperlink, ou seja, uma referência
de uma página a outra. Nesses casos é preciso converter
os dados para o formato urlencode. A terceira maneira de utilizar
o GET é através de formulários HTML, e neste
caso o usuário não precisa se preocupar com a codificação
dos dados. A utilização de formulários HTML
é a única maneira possível de submeter dados
pelo método POST.</p>
Alguem descobriu onde baixar esse tutorial???
02/09/2008 8:57am
(~16 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.
Obriado.
28/06/2007 5:30am
(~17 anos atrás)
Não consigo fazer o download através do link (http://phpbrasil.com/click.php?send=http://www.helo.tato.nom.br/arquivos/apostilaphp_mv.pdf).
01/06/2006 5:22am
(~18 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
(~19 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?
Alguém tem disponível para download?
24/06/2005 7:06pm
(~19 anos atrás)
dizem q a primeira impreção é a q fica,
axei bastante intuitivo.
:)
axei bastante intuitivo.
:)
24/04/2005 11:56pm
(~19 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é +
http://www.helo.tato.nom.br/arquivos/apostilaphp_mv.pdf
Té +
11/03/2005 7:31pm
(~19 anos atrás)