GET frente a POST: cuándo usar cada uno
Comprenda la diferencia entre HTTP GET y POST en PHP.
GET frente a POST: cuándo usar cada uno es una lección gratuita de PHP Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de PHP Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de PHP Academy incluye 4 lecciones en total.
Métodos HTTP en PHP web
Cuando un navegador envía un formulario HTML, utiliza el método HTTP GET o POST. PHP captura los datos enviados mediante superglobales:
$_GET— datos añadidos a la URL$_POST— datos incluidos en el cuerpo de la solicitud
Método GET
GET añade los datos del formulario a la URL como parámetros de la cadena de consulta:
<!-- 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 envía los datos en el cuerpo de la solicitud HTTP, por lo que no aparecen en la 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'] ?? '';Cuándo utilizar GET
Utilice GET cuando:
- La solicitud sea idempotente (sin efectos secundarios)
- Los datos puedan aparecer en la URL: búsquedas, filtros o paginación
- Quiera que las URL se puedan marcar o compartir
- Los datos no sean confidenciales
Cuándo utilizar POST
Utilice POST cuando:
- La solicitud cambie el estado del servidor (crear, actualizar o eliminar)
- Los datos sean confidenciales (contraseñas o información personal)
- Envíe grandes cantidades de datos (archivos o textos largos)
- No quiera que los navegadores ni los proxies almacenen los datos en caché
Límites de longitud de GET
Las solicitudes GET tienen límites de longitud para la URL (normalmente, unos 2000 caracteres en la práctica). POST no tiene un límite práctico, salvo el establecido en la configuración del 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 y $_COOKIE. Es práctico, pero hace menos evidente el origen de los datos:
<?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 => '',
};Comprobación del método de solicitud
Compruebe siempre el método de la solicitud antes de procesar los datos del formulario:
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$name = trim($_POST['name'] ?? '');
if (!empty($name)) {
echo 'Hello, ' . htmlspecialchars($name);
}
} else {
// Show empty form
}HTTPS y seguridad de los datos
Incluso con POST, los datos son visibles en texto plano a menos que utilice HTTPS. Reglas de seguridad principales:
- Utilice siempre HTTPS en producción
- No envíe nunca contraseñas mediante GET
- POST sobre HTTP sigue siendo inseguro: HTTPS también cifra el cuerpo
Redirección después de POST (patrón PRG)
Después de un POST correcto, redirija a una solicitud GET para evitar envíos duplicados al actualizar la 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;
}Formularios multipart para subir archivos
Para subir archivos, el formulario debe utilizar enctype="multipart/form-data" con 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 filenameComprobación rápida
¿Qué método HTTP debe utilizar al enviar un formulario de inicio de sesión con nombre de usuario y contraseña?
Repaso: GET frente a POST
Diferencias principales:
- GET — en la URL, permite marcarla, no tiene efectos secundarios y tiene un tamaño limitado
- POST — en el cuerpo, adecuado para datos confidenciales y sin límite de URL
- Utilice siempre HTTPS para proteger los datos de GET y POST
- Compruebe
$_SERVER['REQUEST_METHOD']antes de procesar los datos - Aplique el patrón PRG para evitar envíos POST duplicados
Preguntas frecuentes
¿La lección «GET frente a POST: cuándo usar cada uno» es gratis?
Sí — el texto completo de «GET frente a POST: cuándo usar cada uno» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de PHP Academy, actualiza a CoddyKit PRO. El curso de PHP Academy incluye 4 lecciones en total.
¿Qué aprenderé en «GET frente a POST: cuándo usar cada uno»?
Comprenda la diferencia entre HTTP GET y POST en PHP. Practicas PHP Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar PHP Academy?
No se requiere experiencia previa. PHP Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «GET frente a POST: cuándo usar cada uno»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de PHP Academy?
Sí. Cada lección de PHP Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- GET frente a POST: cuándo usar cada uno
- Lectura de datos de formularios con superglobales
- Técnicas de validación de entradas
- Saneamiento de entradas de usuario