Este é um exemplo básico que usa apenas 4 caixas de texto. A partir dele, você pode fazer as modificações que desejar, tais como: criar mais campos de texto, usar Combobox no lugar de caixa de texto, criar um código para validar o email, etc. Neste exemplo, vou criar as caixas de texto diretamente no palco para simplificar a explicação e enfocar a atenção no código de envio da informação, que é o mais importante neste caso.
Crie 4 caixas de texto com os nomes de instancia: nome, email, assunto e mensagem. Apenas mensagem vai ter habilitada a opção de multiline. Incorpore (embed) os caracteres que serão usados (recomendado: Maiúsculas, Minúsculas, Numerais, Pontuação, Latin I). Crie um botão com nome de instância enviar. Clique no palco e na barra de propiedades defina a DocumentClass como Form. Agora, abra um documento de Actionscript (*.as), salve como Form.as e coloque o código abaixo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | package { import flash.display.*; import flash.net.*; import flash.events.* public class Form extends MovieClip { var i:int; var loader:URLLoader = new URLLoader; var request:URLRequest = new URLRequest("form.php"); var variaveis:URLVariables = new URLVariables(); var campos:Array; public function Form() { campos = [nome, email, assunto, mensagem]; mensagem.text = ""; request.method = URLRequestMethod.POST; loader.addEventListener(Event.COMPLETE, loaderComplete); loader.addEventListener(IOErrorEvent.IO_ERROR, loaderError); enviar.addEventListener(MouseEvent.CLICK, enviarClick) function enviarClick(e:MouseEvent) { if ( (campos[0].text.length) && (campos[1].text.length) && (campos[2].text.length) && (campos[3].text.length)) { variaveis.nome = nome.text; variaveis.email = email.text; variaveis.assunto = assunto.text; variaveis.mensagem = mensagem.text; request.data = variaveis; loader.load(request) enviar.removeEventListener(MouseEvent.CLICK, enviarClick) } else { for (i=0; i < campos.length; i++ ) { if (!campos[i].text.length) { campos[i].text = "Preencha aqui"; } } } } function loaderComplete(e:Event){ trace("Mensagem enviada com sucesso.") } function loaderError(e:IOErrorEvent){ trace("Ocorreu um erro.") } } } } |
Feito isso, abra o Bloco de Notas ou qualquer outro editor de texto, salve o documento como form.php e coloque o código abaixo:
<?php $nome = $_POST["nome"]; $email = $_POST["email"]; $assunto = $_POST["assunto"]; $mensagem = $_POST["mensagem"]; $recipient = "email@dominio.com"; $ip = $_SERVER['REMOTE_ADDR']; utf8_decode($nome); utf8_decode($email); utf8_decode($mensagem); utf8_decode($assunto); $cabecalho = "MIME-Version: 1.0\r\n"; $cabecalho .= "Content-type: text/html; charset=utf-8\r\n"; $cabecalho .= "Reply-to: ".$_POST['email']."\r\n"; $cabecalho .= "From: ".$_POST['nome']." <".$_POST['email'].">"; $subject = "Contato: ".$assunto; $msg = "<b>Nome:</b> $nome\n<br /><b>Email:</b> $email\n<br /><b>Mensagem:</b> $mensagem\n<br /><b>IP:</b> $ip\n"; mail($recipient, $subject, $msg, $cabecalho); ?>
Antes de salvar e fechar, mude a linha $recipient = “email@dominio.com”; colocando entre as aspas o email ao qual deseja que a informação seja enviada.
Nota: a linha mensagem.text = “”; do ActionScript foi adicionada porque por alguma estranha razão (bug?) ao deixar a caixa de texto como multiline, inicialmente o Flash não considera o conteúdo do texto como nulo.


em 2 de setembro de 2009
Muito bom Igor!
O pessoal tá sempre procurando por formulários e é uma ótima idéia disponibilizar um exemplo aqui.
:)
em 3 de setembro de 2009
se não me falha a memória, os campos input com multi-linha só nao ficam vazias quando embedadas, quando não estao embedadas elas ficam com o valor vazio mesmo, me corrigam se eu estiver enganado.
quanto ao php acho masi dinamico fazer desta maneira:
http://pastebin.com/fa959c53
e receber a variavel dizendo se foi enviado ou nao pelo php, a partir dai gerar uma mensagem ao usuario.
fica ai a minha dica.
em 3 de setembro de 2009
desculpe pelos erros de ortografia. :P
em 3 de setembro de 2009
esqueci de corrigir o charset do header do email tembém:
http://pastebin.com/d2b1b16ee
#fail
em 7 de setembro de 2009
sandro… abri o arquivo q botei pra download e percebi q esqueci de embedar… huhhu… ou seja, multiline da bug com ou sem embed… enfim, brigado pq senao nao teria visto q esqueci isso e tb brigado pela dica do php… quem puder dar mais dicas, fique à vontade :D
em 11 de setembro de 2009
Olá Igor. Estou caçando na net um formulario de Flash + PHP que dê certo há dias. Tentei usar esse seu exemplo no servidor (Locaweb) e ele não funcionou. Só alterei o e-mail, gerei o swf e coloquei os arquivos no servidor (swf, as e php) e não funfou, como faz??
Obrigado.
[]‘s
em 11 de setembro de 2009
Lucas.
Eu testei o formulário e funciona perfeitamente na Locaweb. Leva uns 5min, mas o e-mail chega, sem necessidade de nenhuma configurção diferente.
em 20 de setembro de 2009
Eder e Igor,
Eu testei novamente e funfou. Aquele dia não sei se fiz alguma coisa errada e talz. Fiquei encabulado e decidi tentar de novo e foi.
Parabéns pelo tutorial, muito obrigado.
Abraços.
em 28 de setembro de 2009
Tentei colocar o formulário a funcionar mas ele nem procede ao envio. Será que pode tentar verificar onde se encontra o erro?
em 28 de setembro de 2009
Sérgio.
Seja um pouco mais específico, que erro ocorre?
Esse formulário funciona “from the box”, ou seja, basta alterar o endereço de e-mail e hospedar no servidor.
“Procurar um erro” no formulário que funciona é difícil.
Verifique se você configurou corretamente o endereço de e-mail e claro, se seu servidor oferece o suporte adequado.
em 26 de janeiro de 2010
Os arquivos para download estão trocados.
Estão vindo com o post do Eder de consulta do Cep.
:x
em 15 de março de 2010
Muito bom mas tem um pequeno defeito.
Clique duas vezes sem escrever nada em enviar e o e-mail vai.
Para arrumar isso criei um outro local para aparecer a mensagem de erro.
em 29 de março de 2010
Simples e objetivo o tutorial parabéns!
em 31 de março de 2010
Valeu guilherme!
e obrigado Eduardo! atualmente trabalho dessa forma de usar uma caixa de texto pra indicar os erros… vou dar uma atualizada neste tutorial pra nao ter esse problema de enviar com 2 cliques. valeu!!