PHP - Métodos GET y POST

Hay dos formas en que el cliente del navegador puede enviar información al servidor web.

  • El método GET
  • El método POST

Antes de que el navegador envíe la información, la codifica utilizando un esquema llamado codificación URL. En este esquema, los pares de nombre / valor se unen con signos iguales y los diferentes pares están separados por el signo comercial.

name1=value1&name2=value2&name3=value3

Los espacios se eliminan y se reemplazan con el carácter + y cualquier otro carácter no alfanumérico se reemplaza con valores hexadecimales. Una vez codificada la información, se envía al servidor.

El método GET

El método GET envía la información de usuario codificada adjunta a la solicitud de página. La página y la información codificada están separadas por? personaje.

http://www.test.com/index.htm?name1=value1&name2=value2
  • El método GET produce una cadena larga que aparece en los registros de su servidor, en el cuadro Ubicación: del navegador.

  • El método GET está restringido para enviar hasta 1024 caracteres únicamente.

  • Nunca use el método GET si tiene una contraseña u otra información confidencial para enviar al servidor.

  • GET no se puede utilizar para enviar datos binarios, como imágenes o documentos de Word, al servidor.

  • Se puede acceder a los datos enviados por el método GET usando la variable de entorno QUERY_STRING.

  • El PHP proporciona $_GET matriz asociativa para acceder a toda la información enviada mediante el método GET.

Pruebe el siguiente ejemplo poniendo el código fuente en el script test.php.

<?php
   if( $_GET["name"] || $_GET["age"] ) {
      echo "Welcome ". $_GET['name']. "<br />";
      echo "You are ". $_GET['age']. " years old.";
      
      exit();
   }
?>
<html>
   <body>
   
      <form action = "<?php $_PHP_SELF ?>" method = "GET">
         Name: <input type = "text" name = "name" />
         Age: <input type = "text" name = "age" />
         <input type = "submit" />
      </form>
      
   </body>
</html>

Producirá el siguiente resultado:

El método POST

El método POST transfiere información a través de encabezados HTTP. La información se codifica como se describe en el caso del método GET y se coloca en un encabezado llamado QUERY_STRING.

  • El método POST no tiene ninguna restricción sobre el tamaño de los datos que se enviarán.

  • El método POST se puede utilizar para enviar datos ASCII y binarios.

  • Los datos enviados por el método POST pasan por el encabezado HTTP, por lo que la seguridad depende del protocolo HTTP. Al utilizar HTTP seguro, puede asegurarse de que su información esté segura.

  • El PHP proporciona $_POST matriz asociativa para acceder a toda la información enviada mediante el método POST.

Pruebe el siguiente ejemplo poniendo el código fuente en el script test.php.

<?php
   if( $_POST["name"] || $_POST["age"] ) {
      if (preg_match("/[^A-Za-z'-]/",$_POST['name'] )) {
         die ("invalid name and name should be alpha");
      }
      echo "Welcome ". $_POST['name']. "<br />";
      echo "You are ". $_POST['age']. " years old.";
      
      exit();
   }
?>
<html>
   <body>
   
      <form action = "<?php $_PHP_SELF ?>" method = "POST">
         Name: <input type = "text" name = "name" />
         Age: <input type = "text" name = "age" />
         <input type = "submit" />
      </form>
   
   </body>
</html>

Producirá el siguiente resultado:

La variable $ _REQUEST

La variable PHP $ _REQUEST contiene el contenido de $ _GET, $ _POST y $ _COOKIE. Discutiremos la variable $ _COOKIE cuando expliquemos sobre las cookies.

La variable PHP $ _REQUEST se puede utilizar para obtener el resultado de los datos del formulario enviados con los métodos GET y POST.

Pruebe el siguiente ejemplo poniendo el código fuente en el script test.php.

<?php
   if( $_REQUEST["name"] || $_REQUEST["age"] ) {
      echo "Welcome ". $_REQUEST['name']. "<br />";
      echo "You are ". $_REQUEST['age']. " years old.";
      exit();
   }
?>
<html>
   <body>
      
      <form action = "<?php $_PHP_SELF ?>" method = "POST">
         Name: <input type = "text" name = "name" />
         Age: <input type = "text" name = "age" />
         <input type = "submit" />
      </form>
      
   </body>
</html>

Aquí, la variable $ _PHP_SELF contiene el nombre del auto script en el que se está llamando.

Producirá el siguiente resultado: