Como recibir datos enviados mediante el método POST en PHP
En PHP $_POST es un array que almacena datos que se envían a través del método HTTP POST, pudiendo ser enviados de diferentes maneras.
Cuando hablamos de HTTP estamos hablando del protocolo HTTP toda la web está basado en este, cuando tú buscas con el navegador lo que en realidad está pasando es que estás utilizando un cliente HTTP que busca una página que se encontrara alojada en un Servidor HTTP como puede ser APACHE, Nginx, IIS, etc.
Cuando utilizamos HTTP POST nos permite enviar datos de forma segura, es muy distinto a HTTP GET, ya que GET deja visible lo enviado en la URL.
HTTP POST además nos permite enviar archivos, en el caso de PHP estos archivos serán manejados con la variable de $_FILES
en PHP
HTTP POST se puede utilizar para iniciar sesión, registrarse, carritos, enviar comentarios, etc. No tiene ningún sentido utilizar GET para esto.
Hay muchas maneras de enviar un post a nuestro PHP desde HTML cuando en un formulario utilizamos method="post"
a envíos de post con JavaScript
<form action="enviar.php" method="post"> <label for="nombre">Nombre:</label> <input type="text" id="nombre" name="nombre" required> <br> <label for="email">Correo electrónico:</label> <input type="email" id="email" name="email" required> <br> <label for="mensaje">Mensaje:</label> <textarea id="mensaje" name="mensaje" required></textarea> <br> <input type="submit" value="Enviar"> </form>
En PHP, $_POST
es un array así que le tendremos que decir lo que queremos obtener.
En el HTML anterior vemos que en los inputs tenemos un atributo llamado name, este es el valor que se utiliza para identificar los campos.
Entonces, para saber el valor que ha enviado el usuario en el primer input en nuestro archivo PHP utilizamos $_POST['nombre']
A continuación verá una forma de enviar HTTP POST a nuestro archivo enviar.php utilizando la API Fetch, tenga en cuenta que no podemos ver todas las formas de enviar HTTP POST, ya que la entrada sería demasiado extensa, así que veremos esta que la vera más seguida.
const datos = { nombre: "Juan Pérez", correo: "juan.perez@ejemplo.com", mensaje: "Este es un mensaje de prueba.", }; fetch("enviar.php", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify(datos), }) .then((response) => { if (response.ok) { console.log("Datos enviados correctamente"); } else { console.log("Error al enviar los datos"); } }) .catch((error) => { console.log("Error:", error); });
Si en enviar.php hago echo de la distinta data:
echo $_POST['nombre']; echo $_POST['correo']; echo $_POST['mensaje'];
Juan Pérez juan.perez@ejemplo.com Este es un mensaje de prueba.