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
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Formulario | Casillas y un botón con los que el visitante envía datos al servidor. | <form method="post"> |
| GET | Un método que envía los datos dentro de la dirección de la página. | buscar.php?q=tortilla |
| POST | Un método que envía los datos dentro de la petición, sin verse en la dirección. | method="post" |
| $_POST | El array donde PHP deja los datos recibidos por POST. $_GET es el de GET. | $_POST["name"] |
| Escapar | Cambiar los signos especiales de un texto para que el navegador no los tome por código. | htmlspecialchars($name) |
| Dato de fuera | Todo 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
<?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
| GET | POST | |
|---|---|---|
| Dónde viajan los datos | En 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 usarlo | Buscar y filtrar | Enviar 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
<?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 preguntasTus 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.