Easier to read with cream paper, a tint, more contrast or larger text? Choose your colours and text, once, for every page.

Vista previa

Recibir un formulario

Esta es la primera página de la lección. Léela y prueba las actividades. El resto está en el curso completo.

40 minutos

Rellenas, pulsas y la página contesta

Escribes tu nombre en el formulario del bar, pulsas Pedir, y la página dice: "Gracias, Marta".

Esa página no sabía tu nombre antes. Lo ha recibido de tu navegador y lo ha usado.

Hoy aprendes a recibir esos datos con PHP. Y a no fiarte de ellos, que es igual de importante.

Palabras clave

PalabraQué significaEjemplo
FormularioCasillas y un botón con los que el visitante envía datos al servidor.<form method="post">
GETUn método que envía los datos dentro de la dirección de la página.buscar.php?q=tortilla
POSTUn método que envía los datos dentro de la petición, sin verse en la dirección.method="post"
$_POSTEl array donde PHP deja los datos recibidos por POST. $_GET es el de GET.$_POST["name"]
EscaparCambiar los signos especiales de un texto para que el navegador no los tome por código.htmlspecialchars($name)
Dato de fueraTodo lo que escribe el visitante. Nunca es de fiar.$_POST["name"]

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Qué le llega al servidor

Cuando pulsas el botón, el navegador envía una petición con los datos del formulario.

El servidor ejecuta tu script. PHP pone los datos en un array, con el nombre de cada campo como clave.

Si un campo puede faltar, escribe ??: $_POST["name"] ?? "" da una cadena vacía cuando no llegó nada.

Pruébalo: un envío simulado

Código: php
<?php
// Aquí no hay formulario real: simulamos lo que enviaría el navegador.
$_POST = ["name" => "Marta"];

$name = $_POST["name"] ?? "";
echo "Hola, " . $name . "\n";

// Cambia Marta por tu nombre.

GET o POST

Con GET los datos van en la dirección, detrás de un signo de interrogación. Se ven y puedes guardar el enlace. Va bien para buscar.

Con POST viajan dentro de la petición. Va bien para enviar un pedido o una contraseña.

Ojo: POST no cifra nada. Para eso hace falta HTTPS, el candado de la barra.

Ejemplo resuelto: GET frente a POST

GETPOST
Dónde viajan los datosEn la dirección, tras el ?Dentro de la petición
¿Se ven en la barra?SíNo
¿Puedes guardar el enlace?SíNo
Cuándo usarloBuscar y filtrarEnviar pedidos y contraseñas
Cómo se lee en PHP$_GET["q"]$_POST["name"]

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Una página completa: pedido.php

Código: php
<?php
$name = trim($_POST["name"] ?? "");
?>
<h1>Pedido del recreo</h1>
<form method="post" action="pedido.php">
  <label for="name">Tu nombre</label>
  <input id="name" name="name" type="text">
  <button type="submit">Pedir</button>
</form>
<?php
if ($name !== "") {
    echo "<p>Gracias, " . htmlspecialchars($name) . ". Tu pedido está en marcha.</p>";
}
?>

Repaso rápido: GET y POST

Inténtalo

Repaso rápido: GET y POST

3 preguntas
Pruébalo: tus respuestas se corrigen aquí y después se olvidan. Inicia sesión si quieres que se guarde tu puntuación y continuar donde lo dejaste.Iniciar sesión para guardar tu puntuación

Tus respuestas se corrigen aquí y no se guardan. Una cuenta guarda tus resultados.

No te fíes de lo que llega

Cualquiera puede escribir lo que quiera en un campo. Una persona maliciosa puede escribir código HTML o JavaScript.

Si tu página lo escribe tal cual, el navegador de los demás lo ejecutaría. Se llama ataque XSS.

La defensa es escapar: con htmlspecialchars los signos como < se vuelven texto inofensivo. Hazlo siempre que escribas un dato de fuera.

La lección continúa

12 partes más de esta lección están en el curso completo, con los ejercicios y la comprobación final. Una cuenta te da todo.