Nenhum produto encontrado nessa seleção.
Em nossa última aula, vimos como manipular os dados da supervariável $_POST, que é muito utilizada em formulários HTML. Hoje vamos falar sobre $_GET, que é um array associativo que trata os dados recebidos através de HTTP GET.
$_GET recebe os dados diretamente de uma URL após um ponto de interrogação, exemplo:
- www.site.com.br/index.php?variavel=valor
Quando queremos passar mais de um valor, eles devem ser separados por um "E" comercial (&), veja outro exemplo:
- www.site.com.br/index.php?variavel=valor&variavel2=valor2&variavel3=valor3
Este método também pode ser utilizado em formulários que utilizam o method igual a get, exemplo:
<form method="get" action=""> <p>Nome: <input type="text" name="nome"></p> <p><input type="submit" value="Enviar"></p> </form>
Se você criar um arquivo PHP com este formulário, verá que, ao enviar o formulário, a sua URL irá mudar. Um ponto de interrogação será adicionado junto da palavra "nome", um sinal de igual (=) e o valor postado. Por exemplo, se eu digitar meu nome, a minha URL ficou assim:
http://127.0.0.1/Cursos/php/aula_22/?nome=Luiz+Ot%E1vio
Perceba que o valor é codificado para um formato de URL. Toda vez que você for enviar um valor diretamente para criar uma URL utilizando este método, também terá que codificar o mesmo com a função urlencode ou rawurlencode.
Na página de recebimento dos dados, utilize urldecode ou rawurldecode. Você vai ver isso mais adiante no artigo.
Vamos ver como receber os dados de $_GET em PHP.
Manipulando $_GET em PHP
Da mesma maneira que vimos em $_POST, $_GET também é um array associativo com todos os valores que estiverem presentas na URL. Por exemplo, se pegarmos aquele formulário que criamos anteriormente e colocarmos o seguinte no arquivo PHP (trecho abaixo), vamos ver o valor postado no input com atributo name igual a nome na tela do navegador.
<?php /* Verifica se $_GET['nome'] existe e não está vazio */ if ( isset( $_GET['nome'] ) && ! empty( $_GET['nome'] ) ) { /* Mostra o valor de $_GET['nome'] concatenado a uma frase */ echo 'O valor de $_GET['nome'] é: ' . $_GET['nome'] . '<br>'; } ?> <form method="get" action=""> <p>Nome: <input type="text" name="nome"></p> <p><input type="submit" value="Enviar"></p> </form>
Agora você pode escrever algo no formulário e enviar para vermos o resultado.
Perceba que não estamos decodificando o valor, o PHP está fazendo isso automaticamente, mas se quisermos garantir, podemos utilizar as funções mencionadas anteriormente. Veja um exemplo:
<?php /* Verifica se $_GET['nome'] existe e não está vazio */ if ( isset( $_GET['nome'] ) && ! empty( $_GET['nome'] ) ) { /* Mostra o valor de $_GET['nome'] concatenado a uma frase */ echo urldecode( $_GET['nome'] ) . '<br>'; } ?> <form method="get" action=""> <p>Nome: <input type="text" name="nome"></p> <p><input type="submit" value="Enviar"></p> </form>
Você pode incluir quantos campos desejar no seu formulário, veja:
<?php /* Verifica se $_GET['nome'] existe e não está vazio */ if ( isset( $_GET['nome'] ) && ! empty( $_GET['nome'] ) ) { echo $_GET['nome']; echo $_GET['telefone']; echo $_GET['email']; } ?> <form method="get" action=""> <p>Nome: <input type="text" name="nome"></p> <p>Telefone: <input type="text" name="telefone"></p> <p>Email: <input type="text" name="email"></p> <p><input type="submit" value="Enviar"></p> </form>
E assim como em $_POST, também podemos configurar os dados recebidos por HTTP GET em variáveis, veja:
<?php /* Verifica se $_GET['nome'] existe e não está vazio */ if ( isset( $_GET['nome'] ) && ! empty( $_GET['nome'] ) ) { // Cria as variáveis $nome = $_GET['nome']; $telefone = $_GET['telefone']; $email = $_GET['email']; // Mostra os dados na tela echo $nome . '<br>'; echo $telefone . '<br>'; echo $email . '<br>'; } ?> <form method="get" action=""> <p>Nome: <input type="text" name="nome"></p> <p>Telefone: <input type="text" name="telefone"></p> <p>Email: <input type="text" name="email"></p> <p><input type="submit" value="Enviar"></p> </form>
Podemos até criar variáveis dinamicamente com o laço foreach:
<?php /* Verifica se $_GET['nome'] existe e não está vazio */ if ( isset( $_GET['nome'] ) && ! empty( $_GET['nome'] ) ) { // Cria variáveis dinamicamente foreach ( $_GET as $chave => $valor ) { $$chave = $valor; } // Mostra os dados na tela echo $nome . '<br>'; echo $telefone . '<br>'; echo $email . '<br>'; } ?> <form method="get" action=""> <p>Nome: <input type="text" name="nome"></p> <p>Telefone: <input type="text" name="telefone"></p> <p>Email: <input type="text" name="email"></p> <p><input type="submit" value="Enviar"></p> </form>
Além disso, podemos criar uma variável manualmente. Veja logo abaixo.
$_GET em uma URL
Você pode criar uma URL manualmente com quantos valores quiser passar para o HTTP GET, basta seguir o padrão descrito no início desse artigo: um interrogação para o primeiro grupo de chave=valor; um "E" comercial (&) para o restante.
Neste caso, o PHP funcionará da mesma maneira. Ou seja:
echo $_GET['chave_1']; echo $_GET['chave_2']; echo $_GET['chave_3']; echo $_GET['chave_4']; echo $_GET['chave_5']; echo $_GET['chave_6']; .... echo $_GET['qualquer_chave'];
Não deixe de ler o artigo anterior, sobre $_POST.
Vídeo Tutorial sobre $_POST e $_GET
Abaixo você vai assistir a um vídeo tutorial que criei baseado nos dois artigos, sobre $_GET e $_POST.
Concluindo
$_GET e $_POST serão seus companheiros para o resto da sua vida de programador em PHP, portanto, esteja bem familiarizado com ambos. Teste, aprimore seus conhecimentos, e, caso tenha dúvidas, não deixe de perguntar nos comentários.
E não deixe de seguir o resto das aulas em nosso curso de PHP gratuito.