segunda-feira, 27 de setembro de 2010

Aprenda a receber dados de Formulário com PHP

Existem três arrays associativos que podemos usar para receber dados de Formulários HTML em PHP. São eles: $_GET, $_POST e $_REQUEST. Os dois primeiros são usados de acordo com o método de envio de informações definido para o formulário. Já o array $_REQUEST recupera dados tanto de formulários que utilizam GET quanto POST.


Para exemplificar, crie uma pasta chamada forms na raiz do seu Ambiente de Desenvolvimento. No meu caso, como estou usando o Wamp, meu diretório raiz é C:\wamp\www.

Agora, abra um Editor de Textos simples (Bloco de Notas por exemplo) e digite o código abaixo:
<html>
<head>
<title>Recebendo dados do Formulário</title>
</head>
<body>
<form method="post" action="receber-form.php">
Digite seu nome:<br />
<input type="text" name="nome" />
<input type="submit" value="Enviar" />
</form>
</body>
</html>
Salve o arquivo com o nome form-teste.html dentro da pasta forms.

Repare que criamos um formulário que utiliza o método POST e que enviará dados para o arquivo receber-form.php que criaremos no mesmo diretório. O formulário possui apenas uma Caixa de Texto e um Botão de Envio. Observe também que o valor do parâmetro name da Caixa de Texto é nome.

Pra finalizar, abra um novo documento no Editor de Textos e digite o código abaixo:
<?php
$nome = $_POST['nome'];
echo "Olá " . $nome;
?>
Salve o arquivo com o nome receber-form.php na pasta forms.

Entenda que, na linha 2, criamos uma variável com o nome $nome (poderia ser outro nome) que recebe o texto digitado na Caixa de Textos do formulário. Isso porque utilizamos $_POST['nome'] onde a chave nome corresponde ao parâmetro name da Caixa de Texto do formulário.

É bom lembrar que se substituirmos a segunda linha do Arquivo PHP por:
$nome = $_REQUEST['nome'];
Teríamos o mesmo resultado.

Por fim, abra o navegador acesse o endereço: http://localhost/forms/form-teste.html

Observe o resultado:
Receber Dados do Formulário

Após preencher o nome e clicar em Enviar:
Receber Dados do Formulário

Obviamente que esse é um exemplo simples, apenas para mostrar como o PHP recebe dados de um Formulário. Em breve, explicarei como gravar esses dados em um Arquivo de Textos, em Bancos de Dados e até como enviar por E-mail.

Nota: Existe uma variável no Arquivo de Configuração do PHP (php.ini) chamada register_globals, essa variável pode receber dois valores: On e Off (Off é o padrão por segurança). Quando o valor está definido como On, nós não precisamos utilizar os arrays associativos $_POST, $_GET ou $_REQUEST para receber dados de formulários. Isso quer dizer que, caso o valor dessa variável esteja definido como On, o Código PHP do exemplo acima também funcionaria se tirasse-mos a segunda linha conforme abaixo:

<?php
echo "Olá " . $nome;
?>
Não sabe como alterar o Arquivo de Configuração do PHP? Expliquei isso no post: Conheça todas as formas de Abrir e Fechar Blocos de Código PHP.


Leia mais:

15 comentários:

  1. Fiz ..deu tudo certo. Parabéns....

    ResponderExcluir
  2. nao funcionou...fiz e nao deu...Entao copiei o seu e guardei como disse e nao deu.

    ResponderExcluir
  3. Três detalhes que podem causar erro são:

    - Na tag "form" do arquivo "form-teste.html", o parâmetro "method" está definido como "post"?

    - Na tag "form" do arquivo "form-teste.html", o parâmetro "action" esta definido com o valor "receber-form.php"? Verifique se o nome do arquivo esta correto e se os dois arquivos ("form-teste.html" e "receber-form.php") estão no mesmo diretório.

    - Na tag "form" do arquivo "form-teste.html", verifique se o parâmetro "name" da caixa de texto esta definido como "nome" e se no arquivo "receber-form.php" esta recebendo como $_POST['nome'].

    Se ainda nada disso funcionar e estiver usando o Wamp conforme uso nos exemplos, reinicie todos os serviços do Wamp (Mostrei isso em: http://denecir.blogspot.com/2010/09/abrir-fechar-php.html) e teste novamente.

    Diz aí o que deu depois.


    Abração!

    ResponderExcluir
  4. adorei seu post!! muito bom mesmo...enviar os dados lidos para o email é muito difícil? adorava experimentar :)

    ResponderExcluir
  5. Olá Miguel! Obrigado pelo comentário no meu Blog!

    Mandar e-mail com PHP é super fácil. Com apenas uma linha de código a mais você consegue fazer isso. Basta usar a função mail conforme abaixo:

    mail($destinatario, $assunto, $mensagem, $cabecalho);

    Onde:

    $destinatario = E-mail do destinatário (quem vai receber a mensagem);

    $assunto = Assunto da mensagem;

    $mensagem = Mensagem em si;

    $cabecalho (opcional) = Cabeçalho da mensagem. Aqui você pode informar o Remetente (quem envia), o tipo de mensagem (Texto ou HTML), pode adicionar arquivos anexos, etc.

    O exemplo abaixo, ao ser executado, envia um e-mail pra mim (denecir@gmail.com) no formato "HTML" com o assunto "Teste de assunto" e com a mensagem "Teste de Mensagem". Veja só:

    mail("denecir@gmail.com", "Teste de assunto", "Teste de Mensagem", "From: DenecirPOP \r\n Content-Type: text/html \r\n");

    Como se trata de uma mensagem no formato HTML (Informado no cabeçalho), você pode utilizar TAGs para formatar.

    São várias opções e por isso, assim que possível, farei um POST para explicar mais recursos da função MAIL.

    Espero ter ajudado. Qualquer coisa, posta aí...


    Abração!

    ResponderExcluir
  6. Oi Denecir! gostei do seu blog. achei esse site sem querer, navegando e procurndo respostas sobre Dreamweaver. Eu tirei o curso de: Programação:(Visual Basic, Delphi_7, MS_Access)
    Programação WEB:(HTML, PHP, JavaScript, Flash, MySQL)
    Como sabe, os corsos comerciais são basicos, então nunca perco o tempo de procurar mais: Apostilas, Video aulas e informacão sobre assunto em questão.
    Achei esse site bem montado, simples navegar e achar informacão nele, se você mejmo montou ele, meus parabens!..
    (desculpe sobre erros gramaticos. Eu sou estrangeiro...)

    ResponderExcluir
  7. Eu gostaria de sua ajuda.
    Eu fiz um formulario, mas quando recebo o "comentário" da pessoa por email, o texto vem todo junto sem querbra de linhas...
    Como posso resolver isso?
    Obrigada!
    vava.abracado@gmail.com

    ResponderExcluir
  8. Usa o a função "nl2br" na mensagem:
    http://php.net/manual/pt_BR/function.nl2br.php

    ResponderExcluir
  9. Eu nao entendo quando salvo um arquivo .php ele coloca o arquivo em formato de texto e nao em linguagem web como deveria ser dai quando mando enviar meu nome ele abre a o aruivo receber-form.php no navegador mas com os codigos escritos como um texto("")e nao como um programa...o que estou fazendo de erradopoderia me ajudar?
    Obs.:Meu navegador eh o Google Chrome
    Meu editor de texto eh o bloco de notas
    Meu sistema operacional eh o Windows Vista

    ResponderExcluir
  10. Este comentário foi removido por um administrador do blog.

    ResponderExcluir
  11. O arquivo esta mesmo com a extensão ".php"? No Windows, vai em "Organizar" -> "Opções de Pasta e Pesquisa" -> Guia "Modo de Exibição" -> Desmarque a opção "Ocultar as extensões de Tipos de Arquivos conhecidos" -> Clique em "OK". Depois, vai na pasta onde esta o arquivo e verifique se a extensão esta correta.

    Se mesmo assim não estiver funcionando, verifique no código se você iniciou o mesmo com a abertura padrão do PHP assim: "<?php"

    Digo isso, porque as outras formas de iniciar um código ("<?", "<%" e "<?=") dependem de ajustes no php.ini.

    Se nada funcionar, me passa seu e-mail, msn ou skype para que eu possa te ajudar. Você fez comentário como anônimo e não tenho como entrar em contato para te ajudar.

    No aguardo. Abraço!

    ResponderExcluir

O que você achou do post? Faça um comentário.

Todos os direitos reservados.

Todos os direitos reservados.