abr
07
2009

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

Olá Pessoal,

Segue o post de hoje, com algum atraso, mas foi por uma boa causa: eu quis incrementar um pouco mais com exemplos e outras explicações.

Finalmente entramos na parte IV do nosso minicurso. Daqui até o fim da semana falaremos sobre passagem de parâmetros entre páginas e formulários em PHP. É um assunto muito importante, e espero que o conteúdo seja assimilado por todos. Bem, até o presente momento a única coisa que fizemos foi utilizar variáveis e arrays declarados em um documento. Com o conhecimento que temos, é impossível passar valores de uma página para outra. O que não faz muito sentido, uma vez que a idéia de hyperlink é interligar vários documentos, construindo o que entendemos por web. O PHP nos permite passar parâmetros de duas formas distintas: usando a URL ou enviando dados em uma conexão paralela. A passagem de parâmetros pela URL é conhecida como método GET. Já a passagem de parâmetros por uma conexão paralela é conhecida como método POST. Em ambos os casos passamos informações de uma página para outra. Com isso seremos capazes de criar mecanismos de busca, login, cadastro de usuários, manipulação de dados no banco, upload de arquivo, envio de emails etc. Acho que com isso deu pra entender o quanto é importante estudar o assunto com atenção. Vamos ver cada um desses métodos com detalhes!

MÉTODO POST: FORMULÁRIOS

Ao criar um formulário web etiquetamos vários elementos de entrada de dados com as tags

. Dentro da tag

usamos alguns atributos importantes para o nosso estudo:

Name: Define o nome do formulário (pode ser usado como referência em funções JavaScript).
Action: Define o caminho do arquivo que receberá os dados do formulários.
Method: Define o método de envio dos dados do formulário. Admite os seguintes valores: POST e GET.
Enctype: Define o formato de como os dados serão enviados ao servidor. É obrigatório quando desejamos enviar arquivos a partir do formulário. Esse atributo só funciona com método POST.

O método POST não possui limite de tamanho para envio de dados. Outra coisa importante, os dados do formulário são enviados ocultos junto com a mensagem a ser enviada para o servidor. É o método mais usado, por questões de segurança e capacidade para envio de dados. Só usamos o método GET para troca de informações pequenas que não geram problemas de segurança. Veja a página abaixo:

FORM.PHP

1
2
3
4
5
<form action="recebeForm.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>

Nessa página criamos um formulário simples, com dois campos input e um botão para disparar o envio do formulário. Enviar para onde? Para o caminho declarado no atributo “action” da tag
!!!! E de qual forma? POST ou GET? Será enviado pelo método declarado no atributo “method”. No nosso caso, declaramos o método como POST. Toda vez que clicarmos no botão LOGIN, os dados digitados no campo do formulário serão enviados para a página “recebeForm.php”, usando o método POST. Ok! Enviar dados nós já sabemos mas… E como vamos receber esses dados na página “recebeForm.php”??? De uma forma tão simples quanto a tabuada de cinco. Para resgatar valores com PHP usaremos o array associativo $_POST. Ao enviar um formulário pelo método POST, seus dados são recebidos como um array e atribuídos a variável superglobal $_POST. Sendo $_POST um array, precisaremos de índices para referenciar cada posição. Lembrando que cada posição corresponde a um elemento do formulário. Os índices do array $_POST são os valores do atributo “NAME” de cada campo do formulário. Por exemplo, os dois campos de formulário da página FORM.PHP possuem os seguintes names: login e senha. Assim sendo, resgataremos os valores com $_POST["login"] e $_POST["senha"]. Veja o código abaixo:

RECEBEFORM.PHP

1
2
3
<?php
echo $_POST["login"]." - ".$_POST["senha"];
?>

Viram como é simples? Vamos brincar um pouco mais:

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="post" 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 = $_POST["nome"];
$email = $_POST["email"];
$telefone = $_POST["telefone"];
//Recebo o valor enviado pelo SELECT assunto. Reparem que o valor resgatado corresponde ao VALUE do option selecionado pelo usuário
$assunto = $_POST["assunto"];
$mensagem = $_POST["mensagem"];
 
echo "Nome: $nome <br /> Email: $email <br /> Telefone: $telefone <br /> Assunto: $assunto <br /> Mensagem: $mensagem";
?>

Experimentem um pouco mais da passagem de parâmetros. Criem alguns formulários, resgatem valores, imprimam na tela, concatenem com strings (como fiz nos exemplos acima) e testem diferentes formatações. Amanhã falaremos sobre como trabalhar com checkbox, radiobuttons e select multiple. Dessa forma poderemos selecionar várias informações em um formulário e mandá-las agrupadas. É algo bem útil.

Enquanto isso, deixo um exercício para vocês praticarem: 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. Seguem os códigos abaixo:

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
<?php
$login = array("user01", "user02", "user03", "user04", "user05");
$senha = array("senha01", "senha02", "senha03", "senha04", "senha05");
?>

Mãos a obra e bons estudos! Até amanhã.

Abraços,
Diego.

Seja o primeiro a comentar »

Assine o RSS dos comentários desse post. TrackBack URL


Comente

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