Enviado dados via GET e POST
Estamos no navegador criando dois tipos de requisições GET e POST
POST
Criar uma requisição do tipo POST depende de um formulário web, se você entende um pouco de HTML, irá se sentir mais à vontade.
Dentro da tag form
temos duas propriedades importantes.
- action
- method
A action
será o script de destino, quer dizer para onde enviamos os dados e method
será o método get ou post.
Cada campo (input) que inserimos gera um par nome=valor
.
A propriedade name
será o nome e a propriedade value
será o valor.
Apenas uma observação, o que o usuário digitar nas “inputs” será armazenado e sobrescrito na propriedade value
. Se o
usuário não digitar nada, o valor inicial será considerado. Inclusive se não tiver valor definido para value
e o
usuário não digitar nada o servidor receberá ""
(string de comprimento zero).
Tente localizar o que eu acabei de lhe dizer no formulário abaixo (arquivo index.html
).
<!DOCTYPE html>
<html lang="pt-br">
<head>
<title> Nosso singelo formulário </title>
<meta charset="utf-8">
</head>
<body>
<form action="destino.php" method="post">
<p>
Name: <input type="text" name="username" value="João da Silva" />
</p>
<p>
Email: <input type="text" name="email" value="joao@dasilva.com" />
</p>
<p>
<input type="submit" value="Submit me!" />
</p>
</form>
</body>
</html>
Precisamos criar nosso arquivo de destino destino.php
e, então, inserir o conteúdo abaixo.
<?php
var_dump($_POST);
?>
Abra o arquivo index.html em um navegador qulaquer e clique no botão “Submit me”, você deve estar vendo a seguinte informação:
Como $_POST
é um array podemos alterar o script PHP para:
echo $_POST['username']; // print João da Silva
echo $_POST['email']; // print joao@dasilva.com
GET (via formulário)
Para criar uma requisição GET altere a propriedade method
para “get” do nosso HTML.
...
<form action="destino.php" method="get">
...
E, obviamente, altere o script PHP como mostrado abaixo:
<?php
var_dump($_GET);
?>
Temos o mesmo resultado, veja a figura:
Logo, também podemos fazes isto:
echo $_GET['username']; // print João da Silva
echo $_GET['email']; // print joao@dasilva.com
GET (via URL)
A requisição do tipo GET não depende exclusivamente de um formulário, ela pode ser feita através de um link (URL).
Vamos começar com a URL que aponta para seu script.
/local/onde/esta/seu/script.php
O sinal de interrogação separa o script dos dados.
script.php ? dados
Os dados nos separamos com o par nome=valor.
script.php?nome1=valor1
Tendo mais de um par, utilizamos o sinal &
para separá-los.
script.php?nome1=valor1&nome2=valor2
Tente memorizar o esquema abaixo.
script ? par1 & par2 & par3 & etc..
Em nosso exemplo, a URL ficaria assim:
destino.php?nome=Joao da Silva&email=joado@dasilva.com
Se você acertou o caminho do script verá que o resultado continua idêntico.
E ainda podemos fazer isto:
echo $_GET['username']; // print João da Silva
echo $_GET['email']; // print joao@dasilva.com
Podemos concluir que o GET pode ser disparado através de um formulário html e também através de uma URL.
Isso significa que podemos criar âncoras com URL igual a que acabamos de criar.
Altere o HTML como demonstrado abaixo, repare que eu apaguei o formulário e inseri uma âncora com nossa URL.
<!DOCTYPE html>
<html lang="pt-br">
<head>
<title> Nosso singelo formulário </title>
<meta charset="utf-8">
</head>
<body>
<p>
<a href="destino.php?nome=Joao da Silva&email=joado@dasilva.com">Submit me!</a>
</p>
</body>
</html>
Obs: Para que o HTML continue válido é preciso substituir os sinais &
por &
.
Exercício
1) Experimente cada um dos exemplos que ensinamos em sua própria máquina, tenha a certeza de que entendeu o que está acontecendo e de como funciona o processo:
- exemplo POST via formulário
- exemplo GET via formulário
- exemplo GET via link (âncora)
2) Agora faça pequenas alterações, acrescente um campo qualquer e veja sua nova versão funcionando.