Entendendo a diferença entre os Métodos GET e POST no PHP

É de extrema importância saber bem a diferença desses dois métodos, para que se possa utilizá-los de forma correta e na hora certa. De certa forma, os dois fazem o envio de dados através do HTTP.

GET

Este método é utilizado quando queremos passar poucas/pequenas informações para realizar uma pesquisa ou simplesmente passar uma informação para outra página através da URL (barra de endereços). O que não pode acontecer é as suas requisições resultarem em mudanças no conteúdo da resposta. A função do método GET é pura e simplesmente recuperar um recurso existente no servidor. O resultado de uma requisição GET é “cacheável” pelo cliente, ou seja, fica no histórico do navegador.

Exemplo do GET

http://www.umsite.com.br/?cat=3&pag=2&tipo=5

Para que você possa entender melhor este exemplo, você só precisa olhar para as informações que vem logo após a interrogação “?”, pois é o símbolo que indica o início dos dados passados através da URL, ou seja, pelo método GET. Se você prestar atenção, notará que sempre vem um índice e um valor logo após o sinal de igualdade (Ex.: cat=3) e quando queremos incluir mais de uma informação, acrescentamos o símbolo “&” para concatenar o restante (Ex.: cat=3&pag=2&tipo=5).

Este método é bem restrito quanto ao tamanho e quantidade das informações que são passadas pela URL. Você poderá enviar no máximo 1024 caracteres, o que limita bastante suas possibilidades com esse método. Caso você passe desse limite, você corre o risco de obter um erro da sua página, já que as informações foram passadas de forma incompleta.

Como você já percebeu, as informações enviadas ficam visíveis ao visitante, o que é uma brecha na segurança, pois um visitante malicioso pode colocar algum código de SQL Injection e fazer um belo estrago com o seu site, ou até mesmo o servidor. Então, quando queremos passar parâmetros confidenciais, como exemplo as senhas, não devemos utilizar esse método. Para isso temos o POST.

POST

Este método é mais seguro e tem uma capacidade de dados melhor que o GET. Nesse método uma conexão paralela é aberta e os dados são passados por ela. Não há restrição referente ao tamanho e os dados não são visíveis ao usuário.

Este método é feito através de formulários (Tag <form>), onde passamos informações para uma outra página que irá recebê-las e fazer o que o desenvolvedor quiser, como tratamento dos dados, armazenamento no banco de dados, etc.

Por passar dados invisíveis ao usuário, ela se torna mais segura e devemos utilizar este método quando criamos sistemas de acesso restrito com “sessões” (login/senha).

Para enviarmos algumas informações de um formulário para uma outra página, devemos incluir no atributo “method” o valor “POST” e no atributo “action” o nome do arquivo que irá receber as informações.

Exemplo do POST

<form name="formContato" method="POST" action="enviar_email.php">
<p>
Nome: <input type="text" name="nome" /><br />
E-mail: <input type="text" name="email" /><br />
Mensagem:<br />
<textarea name="mensagem" id="mensagem" cols="45" rows="5"></textarea>
</p>
<p>
<input type="submit" name="button" id="button" value="Enviar Mensagem" />
</p>
</form>

Bom, agora que temos uma visão mais geral dos dois métodos, fica mais fácil para entendermos mais pra frente como trabalhar com o envio dos dados através dos formulários e também pelos links.

Espero que tenham aprendido um pouco mais. Abraços e até mais!

Sou bacharel em Sistemas de Informação pela Estácio de Sá (Alagoas), especialista em Gestão Estratégica da Tecnologia da Informação pela Univ. Gama Filho (UGF) e pós-graduando em Gestão da Segurança da Informação pela Univ. do Sul de Santa Catarina (UNISUL). Certificações que possuo: EC-Council CEH, CompTIA (Security+, CySA+ e Pentest+), EXIN (EHF e ISO 27001), MCSO, MCRM, ITIL v3. Tenho interesse por todas as áreas da informática, mas em especial em Gestão e Governança de TI, Segurança da Informação e Ethical Hacking.

7 Responses to “Entendendo a diferença entre os Métodos GET e POST no PHP”

  1. Pedro disse:

    Execelente explicação, ajudou muito, obrigado!

  2. Bom dia Diego, gostaria de saber como eu faço pra baixar o SQL Server ou o MySql no meu note. Podes me ajudar publicando um passo a passo?

  3. flavio disse:

    parabéns!

  4. Maria da Penha disse:

    Amei!
    Estou entrando nessa área e mim sinto encantada!

  5. augusto disse:

    Obrigado por sua épica explicação 😉

  6. Erivaldo Moreira disse:

    parabens,cara

Deixe um comentário para Diego Macêdo Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *