martes, 2 de septiembre de 2014

El método POST en PHP - 1 de 3



1. Utilización del método POST

El método POST transmite datos de una página PHP a otra. A diferencia del método GET, estos datos no están visibles en la URL. De ahí que este método sea el más utilizado.

Todos los datos que están contenidos en un formulario se envían a la otra página PHP a través del método POST y se reciben en una tabla superglobal $_POST.

Para entenderlo mejor, vamos a crear una página PHP con el nombre formulario.php que contiene un formulario con el nombre y el apellido.



El código de la página formulario.php es:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
<title>Ejercicio con POST</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1" />
</head>
<body>
<form action="recibe_post.php" method="POST" name="formulario">
<h2>Formulario para enviar el nombre y los apellidos</h2>
Nombre: <input type="text" name="nombre" /><br />
Apellido: <input type="text" name="apellido" /><br />
<input type="submit" name="enviar" value="Enviar" />
</form>
</body>
</html>

Observe que en la etiqueta <form> está el atributo method con el valor POST, que es obligatorio para transmitir los valores que se han introducido en el formulario. Si escribe method=GET, los datos que se han introducido se transmiten a la URL.

A continuación, la etiqueta <form> debe contener la acción, es decir, el nombre de la página PHP al que se llama cuando hace clic en enviar (que es de tipo submit).

Cuando hace clic en enviar, todos los valores de los objetos que están en el formulario se envían a la página recibe_post.php, que los recibe en la tabla $_POST.

El código de la página recibe_post.php es:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
<title>Ejercicio con POST</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1" />
</head>
<body>
<h2>Página de recepción del nombre y apellido</h2>
Nombre: <?php echo $_POST["nombre"];?><br />
Apellido: <?php echo $_POST["apellido"];?>
</body>
</html>

Si escribe en la página formulario.php Juan en el nombre y Gómez en el apellido, haga clic en enviar y obtendrá lo siguiente:

Página de recepción del nombre y apellido
Nombre:Juan
Apellido:Gómez


2. Los diferentes elementos del formulario

Vamos a explicar de qué manera se transmiten de una página PHP a otra los elementos de un formulario. En todos los ejemplos siguientes, el código HTML de los elementos del formulario están en la página formulario.php, que contiene el siguiente código:

<form action="recibe_post.php" method="POST" name="formulario">
<input type="submit" name="enviar" value="Enviar" />
</form>

El código HTML se va a añadir entre la etiqueta <form> y la etiqueta <input>.

El código PHP que permite recibir datos con $_POST se va a añadir en la página recibe_post.php entre las etiquetas <body> y </body>.

  • a. Área de tipo texto


El campo texto se escribe en HTML de la siguiente manera:

<input type="texto" name="campo1" value="valor1" />

El atributo value es opcional. Representa el valor que se muestra en la zona de texto. En todas las zonas del formulario, el atributo name es obligatorio, ya que representa la clave de la tabla $_POST que permite recuperar el valor de la zona de texto.

El código PHP que permite recibir el valor de la zona de texto es:

<?php
echo $_POST["campo1"];
?>

Da como resultado:

valor1

La página completa formulario.php es:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
<title>Ejemplo con POST</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1" />
</head>
<body>
<form action="recibe_post.php" method="POST" name="formulario">
<h2>Formulario para enviar un área de texto</h2>
Nombre: <input type="text" name="apellidos" value=""/><br />
<input type="submit" name="enviar" value="Enviar" />
</form>
</body>
</html>

La página completa recibe_post.php es:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
<title>Ejemplo con POST</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1" />
</head>
<body>
<h2>Página de recepción de la zona de texto</h2>
Nombre: <?php echo $_POST["nombre"];?><br />
</body>
</html>

Cuando hace clic en enviar, la página formulario.php transmite el valor que ha introducido en la zona de texto a la página recibe_post.php, que recupera este valor en la tabla $_POST y lo muestra.

  • b. Área de tipo contraseña


El campo de tipo contraseña se escribe en HTML de la siguiente manera:

<input type="password" name="campo1" value="valor1" />

El atributo value es opcional. Representa el valor en la zona de texto.

El código PHP que permite recibir el valor de la zona de texto es:

<?php
echo $_POST["campo1"];
?>

Da como resultado:

valor1

  • c. Área de texto


Este campo se escribe en HTML de la siguiente manera:

<textarea name="campo1">valor1</textarea>

El valor se escribe por defecto entre las etiquetas <textarea> y </textarea>, y no en value.

El código PHP que permite recibir el valor de la zona de texto es:

<?php
echo $_POST["campo1"];
?>

Da como resultado:

valor1

  • d. Lista desplegable de elección simple


Este campo se escribe en HTML de la siguiente manera:

<select name="pais">
<option value="F">Francia</option>
<option value="E">España</option>
<option value="R">Rusia</option>
</select>

El atributo value es opcional. Representa el valor que se ha transmitido a la tabla $_POST.

El código PHP que permite recibir el valor de la lista desplegable es:

<?php
echo $_POST["pais"];
?>

Si selecciona España, da como resultado:

E

Si no introduce el valor en la opción, se transmite el valor entre las etiquetas <option> y </option>.

Por ejemplo, en la página formulario.php:

<select name="pais">
<option>Francia</option>
<option>España</option>
<option>Rusia</option>
</select>

El código PHP que permite recibir el valor de la lista desplegable es:

<?php
echo $_POST["pais"];
?>

Si selecciona España, da como resultado:

España

Puede introducir el atributo selected="selected" en la opción que permite mostrar un país por defecto.

Por ejemplo, para mostrar España:

<select name="pais">
<option>Francia</option>
<option selected="selected">España</option>
<option>Rusia</option>
</select>


Espero haber ayudado en algo. Hasta la próxima oportunidad!







2 comentarios:

  1. Es importante aclarar que el metodo POST proviene del protocolo HTTP no es ina invencion de PHP, PHP solo lo implementa, por lo tanto si alguien quisiera entender mas a fondo el tema podria referirse a la especificacion de HTTP y de paso estudiar los otros metodos GET, POST, PUT, DELETE, OPTIONS, etc..

    ResponderEliminar
    Respuestas
    1. Hola Anónimo, gracias por la visita y el aporte de tus conocimientos!!
      Genial tu aclaración!!
      Los mejores deseos! Hasta cualquier momento!!

      Eliminar