PHP - Métodos GET e POST

Existem duas maneiras pelas quais o cliente do navegador pode enviar informações ao servidor da web.

  • O Método GET
  • O Método POST

Antes de o navegador enviar as informações, ele as codifica usando um esquema chamado codificação de URL. Neste esquema, os pares nome / valor são unidos com sinais de igual e pares diferentes são separados pelo "e" comercial.

name1=value1&name2=value2&name3=value3

Os espaços são removidos e substituídos pelo caractere + e quaisquer outros caracteres não alfanuméricos são substituídos por valores hexadecimais. Depois que as informações são codificadas, elas são enviadas ao servidor.

O Método GET

O método GET envia as informações codificadas do usuário anexadas à solicitação de página. A página e as informações codificadas são separadas pelo? personagem.

http://www.test.com/index.htm?name1=value1&name2=value2
  • O método GET produz uma longa string que aparece nos logs do seu servidor, na caixa Location: do navegador.

  • O método GET é restrito a enviar até 1024 caracteres apenas.

  • Nunca use o método GET se você tiver uma senha ou outras informações confidenciais a serem enviadas ao servidor.

  • GET não pode ser usado para enviar dados binários, como imagens ou documentos do Word, para o servidor.

  • Os dados enviados pelo método GET podem ser acessados ​​através da variável de ambiente QUERY_STRING.

  • O PHP fornece $_GET array associativo para acessar todas as informações enviadas usando o método GET.

Experimente o exemplo a seguir, colocando o código-fonte no 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>

Isso produzirá o seguinte resultado -

O Método POST

O método POST transfere informações por meio de cabeçalhos HTTP. As informações são codificadas conforme descrito no caso do método GET e colocadas em um cabeçalho chamado QUERY_STRING.

  • O método POST não possui nenhuma restrição quanto ao tamanho dos dados a serem enviados.

  • O método POST pode ser usado para enviar dados ASCII e binários.

  • Os dados enviados pelo método POST passam pelo cabeçalho HTTP, portanto a segurança depende do protocolo HTTP. Ao usar HTTP seguro, você pode ter certeza de que suas informações estão seguras.

  • O PHP fornece $_POST array associativo para acessar todas as informações enviadas usando o método POST.

Experimente o exemplo a seguir, colocando o código-fonte no 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>

Isso produzirá o seguinte resultado -

A variável $ _REQUEST

A variável PHP $ _REQUEST contém o conteúdo de $ _GET, $ _POST e $ _COOKIE. Discutiremos a variável $ _COOKIE quando explicarmos sobre cookies.

A variável PHP $ _REQUEST pode ser usada para obter o resultado dos dados do formulário enviados com os métodos GET e POST.

Experimente o exemplo a seguir, colocando o código-fonte no 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>

Aqui a variável $ _PHP_SELF contém o nome do script próprio no qual está sendo chamada.

Isso produzirá o seguinte resultado -