abr
10
2009
3

Minicurso PHP: 4ª Parte – Formulários Web: Passagem de Parâmetros e Método GET

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!!!! :-D

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.

Powered by WordPress | Theme: Aeros 2.0 by TheBuckmaker.com