Cargando



Metodos Post Get y Files de PHP

Veremos los métodos Get, Post y Files de PHP para enviar información a través de formularios de HTML.


nov 27 2015 19:09
Avanzado
nov 28 2015 16:50

A menudo nos encontramos realizando una página web sencilla por lo que recurrimos al lenguaje de HTML para programarla, sin embargo mientras vamos avanzando nos damos cuenta que no es tan sencilla y de que queremos introducir información para posteriormente verla o manejarla y modificarla, y para ello necesitamos apoyarnos de formularios de entrada de datos. Es en ese momento cuando el lenguaje de HTML se nos queda pequeño y recurrimos a otros lenguajes. Lo más habitual es crear formularios de entrada en PHP, y para ello nos podemos valer de los métodos Get y Post.

 

El funcionamiento de ambos métodos es muy sencillo, enviamos un formulario a un script de php para que la información de nuestro formulario esté disponible en dicho script. De esta forma logramos que nuestro sitio web sea interactivo y que la información que introduzcamos por teclado esté disponible para visualizarla o poderla utilizar.

 

Es muy importante saber cómo crear un formulario HTML sencillo para después usar cualquiera de los dos métodos.
Un ejemplo de un formulario sencillo es el siguiente:

<form action="formulario.php" method="GET/POST">
    Usuario: <input type="text" name="usuario" /><br />
    Contraseña:  <input type="password" name="contrasena" /><br />
    <input type="submit" name="submit" value="Enviar" />
</form>

Form se trata de una etiqueta que indica que vamos a crear un formulario en HTML. Y dentro de aquí los dos atributos utilizados son:
  • action - el cual nos indica que tipo de acción realizará nuestro formulario, es decir si la información la vamos a enviar a un correo electrónico o a un programa o a una página web.
  • method - es el atributo que definirá qué tipo de método usamos si Get o Post, es decir la forma en que el formulario será enviado. Puede ser GET o POST pero por defecto si no lo indicamos será GET.

 

Pero ahora bien, ¿Cual es la diferencia entre utilizar el método Post y el método Get?

 

Empecemos por Get:

 

Método GET
Lo primero es que en el ejemplo anterior del formulario en method tenemos que poner “get”.
Si enviamos datos a través de Get, la información es enviada en una URL y cuando la página que solicitamos acabe de cargarse los datos que se han enviado son visibles para el usuario, es decir, al introducir los datos de nuestro formulario, en este caso el usuario y la contraseña, dichos datos aparecerán visibles en nuestro navegador de la siguiente forma:
http://miweb.com/for...contrasena=1986

 

Es decir primero aparece el nombre de nuestra página web, acto seguido el nombre del formulario separado por una barra, o sea, la dirección web en sí; y después del signo de interrogación aparecerán lo valores de los campos que hemos introducido por el teclado.

 

Para acceder a la información enviada a través de get con PHP la forma es la siguiente:

<?php
   $usuario = $_GET['usuario'];
   $contrasena = $_GET['contrasena'];

   echo "Su nombre de usuario es " .$usuario . " y su contraseña es " .$contrasena;
?>
Tenemos que utilizar la variable $_GET con el nombre del campo que queramos recuperar para recoger la información e introducirla en una variable cualquiera y después ya podemos utilizarla normalmente como cualquier otro tipo de variable.
Se visualiza con echo y se accede o modifica de igual manera que con cualquier otra variable que usemos en php.

 

La desventaja de utilizar el método Get entonces es que la información que introducimos será visible y no se envía de una manera oculta. Por lo tanto si enviamos datos confidenciales como contraseñas, tarjetas de crédito, etc nuestra información no estará segura.

 

Otro inconveniente de utilizar Get es que si nuestro formulario tiene muchos campos, todos los valores se irán concatenando en nuestra URL, por lo que nos quedará una dirección en el navegador excesivamente extensa, y sin embargo la longitud máxima soportada es de sólo 2048 caracteres.

 

Además hay que sumarle que al método get no se le pueden enviar información binaria o documentos, sino que únicamente acepta caracteres codificados en ASCII.

 

En conclusión podemos decir que el método GET no es muy recomendable en general a no ser que vayamos a enviar información sin importancia o la cual no importa que sea visible para todo el mundo, y que sea poca información.

 

Método POST
En este caso en el formulario de entrada de HTML tendremos que poner post en vez de get en method. Al contrario que con Get la información que enviamos a través del formulario no viaja por la URL sino que va, encriptada o no, por el cuerpo de la solicitud http.

 

La forma de utilizar Post en php es la siguiente:

<?php
   $usuario=$_POST['usuario'];
   $contrasena=$_POST['contrasena'];

   echo "Su nombre de usuario es " . $usuario . "y su contraseña es " . $contrasena;
?>
Igual que hacíamos en Get guardamos en una variable cualquiera el contenido del campo que queramos, pero esta vez a través de $_POST. Funciona exactamente igual a la hora de visualizarlo, modificar la información, etc.

 

Como ventajas respecto a Get se encuentran:

  • No está la restricción de 2048 caracteres de tamaño que había con Get.
  • La información puede viajar segura si la enviamos a través de algunos protocolos.
  • Además de aceptar caracteres codificados en ASCII también podemos enviar datos binarios.

 

Método FILES
Con el método Get dijimos que no se podían enviar archivos o datos binarios. Con el método post sí que podemos enviar archivos, pero se trata de una forma especial del método post que se llama FILES ya que el identificador es $_FILES.
Para esto hay que modificar un poco el formulario de entrada de HTML:
<form enctype=”multipart/form-data” action="formulario.php" method="post">
    Archivo a subir: <input name=”archive” type=”file”/>
    <input type="submit" name="submit" value="Enviar" />
</form>

Únicamente hemos introducido en la primera línea la palabra reservada enctype que es un atributo de la etiqueta form que nos indica cómo va a viajar la información al enviarse por el formulario. En dicho atributo hemos puesto multipart/form-data lo que significa que vamos a enviar datos binarios y dentro del formulario en sí, debemos especificar que lo que se va a enviar es un archivo poniendo file en el tipo de input o entrada.
En este caso ya no utilizaremos la variable $_POST sino que debemos usar $_FILES, y al tratar con archivos sí que conviene hacer un tratamiento de errores como en el siguiente ejemplo:
<?php
if ($_FILES["archivo"]["error"] > 0)
  {
     echo "Error: " . $_FILES["archivo"]["error"] . "<br />";
  }
else
  {
     echo "Nombre: " . $_FILES["archivo"]["name"] . "<br />";
     echo "Tipo: " . $_FILES["archivo"]["type"] . "<br />";
     echo "Tamaño: ". $_FILES["archivo"]["size"]  . "<br />";
     echo "Ruta: " . $_FILES["archivo"]["tmp_name"];
  }
?>

dónde:
-->$_FILES[“archivo”][“error”] contiene el código de error que se asocia con el archivo en cuestión.
-->$_FILES[“archivo”][“name”] es el nombre del archivo.
-->$_FILES[“archivo”][“type”] es el tipo del fichero que se envía si es que se proporcionó dicho valor. Este campo no se comprueba del lado del servidor por lo que puede que la información no sea la correcta.
-->$_FILES[“archivo”][“size”] nos indica el tamaño del archivo, siempre expresado en bytes.
-->$_FILES[“archivo”][“tmp_name”] se trata de la ruta o del nombre temporal del archivo donde se almacena el archivo que subimos al servidor.

 

Conclusión
Después de la explicación ya sabemos que lo más inteligente es utilizar el Método POST a la hora de realizar nuestros formularios de entrada para poder manejar la información con más seguridad y el método FILES si queremos subir archivos a nuestra página web.


¿Te ayudó este Tutorial?


Sin comentarios, sé el primero!

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X