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 -