Olá,
Antes de tratarmos do método GET, vamos resolver o exercício passado na primeira parte desse tutorial sobre passagem de parâmetros e formulários PHP. O exercício era: “vamos montar uma página com o formulário de login. Os dados digitados pelo usuário serão comparados com valores armazenados em dois arrays. Caso o login e senha batam com os valores do array, imprima uma mensagem de sucesso, caso contrário, imprimo uma mensagem de erro”. Abaixo segue a resolução:
LOGIN.PHP
1 2 3 4 5 | <form action="validaLogin.php" method="post" id="form" name="form"> <label for="login">Login: <input type="text" name="login" id="login" /></label> <label for="senha">Senha: <input type="password" name="senha" id="senha" /></label> <button type="submit">LOGIN</button> </form> |
VALIDALOGIN.PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?php $login = array("user01", "user02", "user03", "user04", "user05"); $senha = array("senha01", "senha02", "senha03", "senha04", "senha05"); //Calculo o tamanho do array $login $tamArray = count($login); //Crio uma variável auxiliar $msg = FALSE; //Uso um loop para percorrer o array - escolherei o FOR, mas você pode usar qualquer outro for ($i = 0; $i < $tamArray; $i++) { if ($_POST["login"] == $login[$i] && $_POST["senha"] == $senha[$i]) { $msg = TRUE; break; } } //Verifico se a variável auxiliar $msg saiu do loop com o valor TRUE (indicando login efetuado com sucesso) if ($msg) { echo "ok"; } else { echo "erro"; } ?> |
Bem, vamos ao GET!!!!
MÉTODO GET: FORMULÁRIOS
Vimos que com o método POST os dados de um formulário são enviados ao servidor por uma conexão paralela, de forma oculta. O método GET envia os valores pela URL, de forma aberta, onde todos enxergam os parâmetros passados. Se o formulário acima for enviado pelo método GET, a URL de requisição ao servidor ficará assim: “validaLogin.php?login=user01&senha=senha01″, onde “?” divide o caminho da página dos parâmetros enviados pela requisição; “&” permite o envio de vários parâmetros encadeados, sempre que for necessário enviar um parâmetro novo, precisamos concatená-lo aos demias parâmetros com “&”. Para resgatar parâmetros enviados pelo método GET, usamos o array associativo $_GET, onde os índices equivalem aos atributos NAME dos campos do formulário (assim como o $_POST).
Bem, além da forma de envio de parâmetros, qual a diferença entre POST e GET? O método GET possui limites quanto a capacidade envio de dados (2KB apenas), e não pode ser usado para envio de dados confidenciais, uma vez que todas as informações são passadas abertamente pela URL. Usamos GET para envio de palavras-chave de busca e outros parâmetros curtos que não prejudiquem a segurança do usuário (ou você quer a senha dele passeando por URL’s a fora?). Veja o nosso exemplo anterior reescrito com o método GET:
FORM.PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <!-- Nesse formulário irei cadastrar vários campos de diferentes tipos --> <form action="recebeForm.php" method="get" id="form" name="form"> <label for="nome">Nome: <input type="text" name="nome" id="nome" /></label> <label for="email">Email: <input type="text" name="email" id="email" /></label> <label for="telefone">Telefone: <input type="text" name="telefone" id="telefone" /></label> <label for="assunto">Assunto: <select name="assunto" id="assunto"> <option value="elogios">Elogios</option> <option value="sugestoes">Sugestões</option> <option value="reclamacoes">Reclamações</option> <option value="outros">Outros</option> </select> </label> <label for="mensagem">Mensagem: <textarea name="assunto" id="assunto"></textarea></label> <button type="submit">ENVIAR</button> </form> |
RECEBEFORM.PHP
1 2 3 4 5 6 7 8 9 10 11 | <?php //Vamos receber os dados do formulário, armazená-los em variáveis e imprimí-los na tela $nome = $_GET["nome"]; $email = $_GET["email"]; $telefone = $_GET["telefone"]; //Recebo o valor enviado pelo SELECT assunto. Reparem que o valor resgatado corresponde ao VALUE do option selecionado pelo usuário $assunto = $_GET["assunto"]; $mensagem = $_GET["mensagem"]; echo "Nome: $nome <br /> Email: $email <br /> Telefone: $telefone <br /> Assunto: $assunto <br /> Mensagem: $mensagem"; ?> |
MÉTODO GET: LINKS
Uma das vantagens do método GET é que com ele não ficamos atrelados a formulários. Uma vez que os parâmetros são passados todos pela URL, é bem fácil enviar parâmetros a partir de links diretamente no atributo HREF da tag <a>. Veja o exemplo abaixo:
MENU.PHP
1 2 3 4 5 6 7 | <ul id="menu"> <li><a href="conteudo.php?id=0">Item 1</a></li> <li><a href="conteudo.php?id=1">Item 2</a></li> <li><a href="conteudo.php?id=2">Item 3</a></li> <li><a href="conteudo.php?id=3">Item 4</a></li> <li><a href="conteudo.php?id=4">Item 5</a></li> </ul> |
CONTEUDO.PHP
1 2 3 4 5 6 7 8 | <?php //Monto um array com todos os conteúdos $conteudo = array("Conteúdo 0...", "Conteúdo 1...", "Conteúdo 2...", "Conteúdo 3...", "Conteúdo 4..."); //Resgato o ID do conteúdo $id = $_GET["id;"]; //Imprimo o conteúdo referente ao ID passado pelo usuário echo $conteudo[$id]; ?> |
E aí? Gostaram? Esse é o princípio para se trabalhar com consultas a banco de dados (aliás, boa parte desses exercícios que fazemos com arrays são preparatórios para quando trabalharmos com MySQL). Então para encerrar, vou deixar um exercício: tentem construir um sistema de menu e conteúdo parecido com esse último exemplo, usando APENAS UMA PÁGINA. Ou seja, você vai criar uma página chamada “index.php” e apontar todos os links para ela mesma. E o conteúdo da página muda conforme o link de menu que o usuário clique. Para fechar esse quarto ciclo de tutoriais, falaremos sobre como enviar emails a partir do PHP. Até amanhã.
Abraços,
Diego.