+2

Manipulando dados de formulários com PHP – Parte 1

criado por Alfred R. Baudisch em 16/01/2006 6:38pm
Para facilitar, esta primeira parte está divida nos seguintes tópicos:
1 - Introdução
2 - Campos Hidden
3 - Campos Text e Textarea
4 - Campos Radio
5 - Campos Checkbox
6 - Campos Select


1 - Introdução
Um formulário HTML é apenas um "rosto bonito" para onde os usuários poderão inserir informações que serão interpretados de alguma maneira por algum script do lado do servidor. E no nosso caso, esse script é um script PHP.

Primeiro: antes para poder enviar as informações, seu formulário deve conter um botão "submit", isso se consegue através do comando:

<input type=submit value="Texto do Botão">

Segundo: todos os campos que serão tratados no script PHP devem conter o parâmetro "NAME", caso contrário, os dados não serão passados para o script PHP. Exemplo:

<input type=text name=nome_do_campo>

Como as informações do formulário são passadas para esse script PHP e como as informações do formulário enviado são tratadas, dependem de você.

Existem 2 métodos como as informações podem ser passadas: GET e POST. O recomendável sempre, para todos os formulários é usar o método POST, onde os dados enviados não são visíveis nas URLs, ocultando possíveis importantes informações e permitindo o envio de longas informações. O GET é totalmente o contrário disso.

Como as informações chegam para o script PHP?
Assuma o seguinte formulário:

<form action="script.php" method="post">
Campo 1: <input type=text name=campo1><br>
Campo 2: <input type=text name=campo2><br>
<input type=submit value="OK">
</form>

Esse formulário usa o método POST para envio das informações, então em "script.php":

<?php
echo "O valor de CAMPO 1 é: " . $_POST["campo1"];
echo "<br>O valor de CAMPO 2 é: " . $_POST["campo2"];
?>

Se o formulário tivesse sido enviado usando o método GET, você simplesmente usaria $_GET no lugar de $_POST.

Observações:
Em vez de usar $_GET ou $_POST você pode escrever a variável com o mesmo nome do campo do formulário (no exemplo, $campo1 e $campo2). Mas, esse uso não é recomendado, pois se a diretiva "register_globals" na configuração do seu PHP estiver desativada, as variáveis com nome dos campos dos formulários, terão um valor vazio.
Uma solução para isso é usar a função import_request_variables no começo dos seus scripts que interpretam formulários. Essa função aceita 3 letras como argumentos: P, G e C, referentes a $_POST, $_GET e $_COOKIE respectivamente. Exemplo de uso:

<?php
import_request_variables("gP");
?>

O que acontece?
Exemplo: Você possui formulário com os campos "nome", "endereço" e "idade". Assuma que a diretiva "register_globals" do seu PHP esteja desligada, mas, você já havia programado o script usando as variáveis no escopo global, no lugar de $_POST.
Adicionando aquela função no começo do script, as variáveis do seu formulário postado: $_POST["nome"], $_POST["endereco"] e $_POST["idade"] serão extraídas cada para uma variável diferente: $nome, $endereco e $idade.

Comentários:

Mostrando 1 - 10 de 31 comentários
Jairus disse:
Parabéns pelo tópico.


Jairus Lopes
29/10/2010 12:03am (~13 anos atrás)

Jairus disse:
Parabéns pelo tópico.


Jairus Lopes
29/10/2010 12:03am (~13 anos atrás)

Felipe disse:
Muito bom mesmo, é de grande uso ! vlw mesmo
20/08/2010 11:14am (~13 anos atrás)

Cara, parabens, este tutorial me será de grande avalia...
Estou iniciando, manjo muito pouco de PHP, sempre trabalhei mais com HTML e JavaScript, agora preciso desenvolver um sisteminha para empresa onde trabalho, e estas informações de grande conhecimento...

Valew´s e parabens...
15/03/2006 8:50am (~18 anos atrás)

Jaydson Gomes disse:
É isso ai mesmo Alfred , coloquei http://localhost/script.php ai funcionou certinho.
Só vou deixar registrado que para funcionar precisou de
import_request_variables("P"); no começo do script.
Muito obrigado mesmo pela atenção. Eu estava empacado nisso.
Valeu !
Jaydson Gomes
27/02/2006 6:36am (~18 anos atrás)

Olá Pessoal,

Obrigado por todos os comentários por aqui! Se eu não os respondi antes é porque eu não sabia que esse meu artigo tinha sido publicado.

Como podem ver eu escrevi a parte 1 e 2. E enviei a parte 1 antes da 2 obviamente, mas foi publicado aqui a 2 lá em 2004, então eu tinha até esquecido dessa parte 1 e cá está ela.

Jaydson, qual ao fato de que o IE está puxando o código, deve ser que no action do seu formulário deve estar um endereço do tipo: file://C:/bla/script.php
Cerfitique de deixar um endereço http://localhost/qualquercoisa/script.php ou apenas o nome do arquivo direto.

Abraços,
Alfred
20/02/2006 4:56am (~18 anos atrás)

Diego Hellas disse:
É bom tentar cultivar esse metodo...


até por que em um script que você fez tem muitas chances de outra pessoa dar manutenção nele.. e assim é criado um "padrão" muito bom e facil de se visualizar, mas tenho que lembrar que muitas vezes as empresas tem politicas para que isso seja feito.
15/02/2006 7:30am (~18 anos atrás)

Jaydson Gomes disse:
Desculpem a ignorancia , mas como disse sou iniciante.
assumindo o codigo exemplo , tentei de todas as maneiras:
com import_request_variables("gP"); e da outra maneira tb. Mas quando o Form puxa o Script.php me abre uma janela do IE mostrando apenas o código.já quando acesso diretamente o Script.php (localhost/script.php) ele mostra o script funcionando.
Alguém pode me dar uma dica ai? Agradeço!
Será alguma configuração no php.ini ?
10/02/2006 10:26am (~18 anos atrás)

Essa eu não sabia!
import_request_variables

vai enconomizar bastante meu tempo!!!

Diego CODU
http://www.cot.org.br/
08/02/2006 9:32am (~18 anos atrás)

Adler Medrado disse:
Não se deve esquecer de tratar os dados provenientes do formulário para evitar que pessoas maliciosas tentes burlar o teu programa.

24/01/2006 9:15am (~18 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)