GET versus POST: quando usar cada um
Entenda a diferença entre HTTP GET e POST em PHP.
GET versus POST: quando usar cada um é uma aula grátis de PHP Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de PHP Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de PHP Academy inclui 4 aulas no total.
Métodos HTTP no PHP para a web
Quando um navegador envia um formulário HTML, ele usa o método HTTP GET ou POST. O PHP captura os dados enviados por meio de superglobais:
$_GET— dados acrescentados à URL$_POST— dados no corpo da requisição
Método GET
GET acrescenta os dados do formulário como parâmetros da cadeia de consulta à URL:
<!-- HTML form -->
<form method="GET" action="search.php">
<input name="query" type="text">
<button type="submit">Search</button>
</form>
<!-- URL becomes: search.php?query=php+tutorial -->
<?php
$q = $_GET['query'] ?? '';
echo 'You searched for: ' . htmlspecialchars($q);Método POST
POST envia os dados no corpo da requisição HTTP — eles não ficam visíveis na URL:
<!-- HTML form -->
<form method="POST" action="login.php">
<input name="email" type="email">
<input name="password" type="password">
<button type="submit">Log In</button>
</form>
<?php
$email = $_POST['email'] ?? '';
$password = $_POST['password'] ?? '';Quando usar GET
Use GET quando:
- A requisição for idempotente (sem efeitos colaterais)
- Os dados puderem aparecer na URL — consultas de pesquisa, filtros, paginação
- Quiser URLs que possam ser adicionadas aos favoritos ou compartilhadas
- Os dados não forem confidenciais
Quando usar POST
Use POST quando:
- A requisição alterar o estado do servidor (criar, atualizar, excluir)
- Os dados forem confidenciais (senhas, informações pessoais)
- For necessário enviar grandes quantidades de dados (arquivos, textos longos)
- Não quiser que os dados sejam armazenados em cache por navegadores ou proxies
Limites de tamanho do GET
As requisições GET têm limites de tamanho de URL (na prática, normalmente cerca de 2.000 caracteres). O POST não tem um limite prático, exceto pela configuração do servidor:
<?php
// php.ini settings for POST limits:
// post_max_size = 8M (total POST body size)
// upload_max_filesize = 2M
// Check current limits at runtime:
echo ini_get('post_max_size'); // 8M
echo ini_get('upload_max_filesize'); // 2MSuperglobal $_REQUEST
$_REQUEST combina $_GET, $_POST e $_COOKIE. É conveniente, mas deixa menos claro qual é a fonte dos dados:
<?php
// Works for both GET and POST but is ambiguous
$name = $_REQUEST['name'] ?? '';
// Better: be explicit about the expected method
$name = match($_SERVER['REQUEST_METHOD']) {
'GET' => $_GET['name'] ?? '',
'POST' => $_POST['name'] ?? '',
default => '',
};Verificação do método da requisição
Sempre verifique o método da requisição antes de processar os dados do formulário:
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$name = trim($_POST['name'] ?? '');
if (!empty($name)) {
echo 'Hello, ' . htmlspecialchars($name);
}
} else {
// Show empty form
}HTTPS e segurança dos dados
Mesmo com POST, os dados ficam visíveis em texto simples, a menos que você use HTTPS. Regras de segurança importantes:
- Sempre use HTTPS em produção
- Nunca envie senhas por GET
- POST sobre HTTP ainda é inseguro — HTTPS também criptografa o corpo
Redirecionamento após POST (padrão PRG)
Após um POST bem-sucedido, redirecione para uma requisição GET para evitar envios duplicados ao atualizar a página:
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Process the form...
$id = saveToDatabase($_POST);
// Post-Redirect-Get (PRG) pattern
header('Location: /success.php?id=' . $id);
exit;
}Formulários multipart para envio de arquivos
Para enviar arquivos, o formulário deve usar enctype="multipart/form-data" com POST:
<!-- Required for file uploads -->
<form method="POST" action="upload.php"
enctype="multipart/form-data">
<input type="file" name="avatar">
<button type="submit">Upload</button>
</form>
<?php
$file = $_FILES['avatar'];
echo $file['name']; // original filenameVerificação rápida
Qual método HTTP você deve usar ao enviar um formulário de login com nome de usuário e senha?
Resumo: GET versus POST
Principais diferenças:
- GET — na URL, pode ser adicionado aos favoritos, sem efeitos colaterais, tamanho limitado
- POST — no corpo, adequado para dados confidenciais, sem limite de URL
- Sempre use HTTPS para proteger os dados de GET e POST
- Verifique
$_SERVER['REQUEST_METHOD']antes de processar os dados - Aplique o padrão PRG para evitar envios POST duplicados
Perguntas Frequentes
A aula “GET versus POST: quando usar cada um” é grátis?
Sim — o texto completo de “GET versus POST: quando usar cada um” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de PHP Academy, atualize para CoddyKit PRO. O curso de PHP Academy inclui 4 aulas no total.
O que vou aprender em “GET versus POST: quando usar cada um”?
Entenda a diferença entre HTTP GET e POST em PHP. Você pratica PHP Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar PHP Academy?
Nenhuma experiência prévia é necessária. PHP Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “GET versus POST: quando usar cada um”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de PHP Academy?
Sim. Cada aula de PHP Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- GET versus POST: quando usar cada um
- Leitura de dados de formulários com superglobais
- Técnicas de validação de entrada
- Sanitização de dados inseridos pelo usuário