Processar variáveis de formulários
Este tipo de transferência é de uma grande utilidade pois permite-nos interagir directamente com o usuário.
Este processo é similar ao explicado para as URLs. Em primeiro lugar, apresentamos uma primeira página com o formulário clássico para preencher e as variáveis são recolhidas numa segunda página que as processa:
Nota: Nem sempre se definem automaticamente as variáveis recebidas por parâmetro nas páginas web, depende de uma variável de configuração de PHP: register_globals, que tem de estar activada para que assim seja. Ver comentários do artigo ao final da página para mais informação. |
<HTML>
<HEAD>
<TITLE>formulario.html</TITLE>
</HEAD>
<BODY>
<FORM METHOD=”POST” ACTION=”destino2.php”>
Nome<br>
<INPUT TYPE=”TEXT” NAME=”nome”><br>
Apelidos<br>
<INPUT TYPE=”TEXT” NAME=”apelidos”><br>
<INPUT TYPE=”SUBMIT”>
</FORM>
</BODY>
</HTML>
<HTML>
<HEAD>
<TITLE>destino2.php</TITLE>
</HEAD>
<BODY>
<?
echo “Variável $nome: $nome <br>n”;
echo “Variável $apelidos: $apelidos <br>n”
?>
</BODY>
</HTML>
$_POST
Relembramos que é possível compilar numa só variável tipo array o conjunto de variáveis que foram enviadas ao script por este método a partir da variável de sistema $_POST:
echo “Variável $nome: ” . $_POST[“nome”] . “<br>n”;
Nota: Ainda que possamos recolher variáveis com este array associativo ou utilizar diretamente as variáveis que se definem na nossa página, torna-se mais seguro utilizar $_POST por duas razões, a primeira é que assim temos a certeza que essa variável vem realmente de um formulário e a segunda, que assim o nosso código será menos confuso quando queiramos lê-lo, porque ficará especificado que estamos a receber essa variável através de um formulário. |
Exemplo de restrição de acesso por idade
Para continuar com exemplos de uso de formulários vamos realizar uma página que mostra e solicita a idade do visitante e, dependendo da sua idade, permite ou não visualizar o conteúdo da web. A maiores de 18 anos é-lhes permitido ver a página e a menores não.
O exemplo é muito simples e não seria correcto para utilizá-lo tal e qual a modo de uma verdadeira barreira de acesso. Só nos serve para saber como obter dados de um formulário e como tratá-los para realizar uma ou outra acção, dependendo do seu valor.
A página do formulário, à qual demos o nome idade.php, teria o seguinte aspecto:
<html>
<head>
<title>Restringir por idade</title>
</head>
<body>
<form action=”idade2.php” method=”post”>
Escreve a tua idade: <input type=”text” name=”idade” size=”2″>
<input type=”submit” value=”Entrar”>
</form>
</body>
</html>
Esta é uma página sem nenhum código PHP, simplesmente tem um formulário. Se repararmos no action do formulário, que está dirigido a uma página chamada idade2.php, que é a que receberá o valor da idade e mostrará um conteúdo ou outro dependendo desse valor. O seu código seria o seguinte:
<html>
<head>
<title>Restringir por idade</title>
</head>
<body>
<?
$idade = $_POST[“idade”];
echo “Tua idade: $idade<p>”;
if ($idade < 18) {
echo “Não podes entrar”;
}else{
echo “Bemvindo”;
}
?>
</body>
</html>
Esperamos que este outro código também não seja estranho. Simplesmente o formulário recebe a idade, utilizando o array $_POST. A seguir, mostra-se a idade e executa-se uma expressão condicional em função de que a idade seja menor que 18. Em caso positivo (idade menor que 18), mostra-se uma mensagem que informa que não se pode aceder à página. Em caso negativo (maior ou igual a 18) mostra-se uma mensagem de Boas-vindas.