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 diferentes pares são separados pelo “e” comercial.
nome1=valor1&nome2=valor2&nome3=valor3
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 por ? personagem.
https://www.tecforest.com.br/teste.php?nome1=valor1&nome2=valor2
- O método GET produz uma longa string que aparece nos logs do servidor, na caixa de url 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 o array associativo $_GET para acessar todas as informações enviadas usando o método GET.
Experimente o exemplo a seguir, colocando o código-fonte no script teste.php.
<?php
if($_REQUEST["nome"] || $_REQUEST["idade"]) {
echo "Bem-vindo(a) ".$_REQUEST['nome']."<br />";
echo "Idade ".$_REQUEST['idade']." anos.";
exit();
}
?>
<html>
<body>
<form action="<?php $_PHP_SELF ?>" method="POST">
Nome: <input type="text" name="nome" />
Idade: <input type="text" name="idade" />
<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 o array associativo $_POST 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["nome"] || $_POST["idade"]) {
if(preg_match("/[^A-Za-z'-]/", $_POST['nome'])) {
die ("invalid name and name should be alpha");
}
echo "Bem-vindo". $_POST['nome']. "<br />";
echo "Você tem ". $_POST['idade']. " anos.";
exit();
}
?>
<html>
<body>
<form action="<?php $_PHP_SELF ?>" method="POST">
Nome: <input type="text" name="nome" />
Idade: <input type="text" name="idade" />
<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 da $_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["nome"] || $_REQUEST["idade"]) { echo "Bem-vindo(a) ".$_REQUEST['nome']."<br />"; echo "Idade ".$_REQUEST['idade']." anos.";
exit(); } ?> <html> <body> <form action="<?php $_PHP_SELF ?>" method="POST"> Nome: <input type="text" name="nome" /> Idade: <input type="text" name="idade" /> <input type="submit" /> </form> </body> </html>
Aqui a variável $_PHP_SELF contém o nome do self script no qual está sendo chamada.
Isso produzirá o seguinte resultado: