0Pricing
PHP Academy · Lección

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');  // 2M

Superglobal $_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 filename

Comprobació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

  1. GET frente a POST: cuándo usar cada uno
  2. Lectura de datos de formularios con superglobales
  3. Técnicas de validación de entradas
  4. Saneamiento de entradas de usuario
← Volver a PHP Academy