Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Thiago de Oliveira Cruz

[Tutorial] Formulário Fácil de e-mail Flash + PHP

Recommended Posts

Bom galera devido a constantes dúvidas e erros com formulários em flash com PHP

 

Resolvi fazer aqui um tutorial explicando fácil como fazer um.

Para vocês verem que não tem mistério e não é nenhum bicho de 7 cabeças

 

Bom vamos começar:

Crie um novo arquivo

 

Nesse arquivo crie 4 camadas

Actions, botões, texto, fundo.

 

Desenhe um fundo ao seu gosto

 

Crie 2 botões o enviar e o limpar, e instancie os mesmos como bt_enviar e bt_limpar.

Lembrando que para colocar a instancia deve se ir nas propriedades do objeto logo a baixo da opções, MovieClip, Button e Graphic tem um campo que pode ser preenchido e é lá onde deve se colocar a instancia.

 

Agora vamos criar 4 caixas de texto.

Nome, instancie como nome.

E-mail, instancie como email.

Mensagem, instancie como mensagem.

E status, instancie como status.

 

 

Ai você vai criar mais um frame no fundo e no actions

E vai colocar uma mensagem de Mensagem enviada com sucesso ou como você quiser

 

 

Há até ai está fácil só estou desenhando não é mesmo?

 

Agora iremos para os actions não é lá muito complicado também.

No frame action

click nele e digite no primeiro frame:

stop();
 nome.text = "";
 email.text = "";
 mensagem.text = "";
 status.text = "";
 var obj_s = new LoadVars();
 var obj_l = new LoadVars();
 
 
 bt_enviar.onPress = function(){
 if (nome.text == "") {
 status.text = "O nome esta vazio";
 selection.setFocus("nome");
 } else if (email.text == "") {
 status.text = "O e-mail está vazio";
 Selection.setFocus("email");
 } else if (mensagem.text == "") {
 status.text = "Faltou a mensagem";
 Selection.setFocus("mensagem");
 } else {
 obj_s.nome = nome.text; //Valor do nome
 obj_s.email = email.text; //valor do e-mail
 obj_s.mensagem = mensagem.text; //valor da mensagem
 obj_s.sendAndLoad("mail.php",obj_l,"POST");
 obj_l.onLoad = carrega();
 }
 }
 
 function carrega(){
 if(obj_l.ok = "1"){
 nextFrame();
 }else{
 status.text = "Erro no envio";
 }
 
 bt_limpar.onPress = function(){
 nome.text = "";
 email.text = "";
 mensagem.text = "";
 status.text = "";
 }
Bom como podem ver eu crie uma funçãozinha que vai verificar se os campos de contato estão todos preenchidos ali no if e else, e se todos estiverem preenchidos ele vai enviar para um arquivo php, que deverá retornar um valor de enviou ou não.

 

Criei também o botão para limpar seus campos de texto caso tenha errado em alguma digitação, ao clicar ali irá apagar tudo.

 

Agora vou ensinar como deve ser construído o PHP de envio de e-mail.

 

Como eu nomeei lá em cima o arquivo para ser chamado de mail.php então vamos manter o nome.

 

Crie um novo arquivo de php e de o nome de mail.php

Então digite o seguinte código:

<?php
 // adicione seu e-mail na linha abaixo
 $recipient = "seu e-mail";
 
 $subject = "formulário de contato";
 
 $nome = $_POST['nome'];
 $email = $_POST['email'];
 $mensagem = $_POST['mensagem'];
 
 $msg = "nome: $nome \n\n E-mail: $email \n\n Mensagem: $mensagem";
 
 // adicione seu e-mail na linha abaixo
 $mailheaders = "From: seu e-mail";
 
 
 $ok = @mail("$recipient", "$subject", "$msg", "$mailheaders");
 if($ok){
 echo "&ok=1&";
 }else {
 Echo "&ok=2&";
 }
 ?>

 

Pronto agora você tem um arquivo em php, e um arquivo flash que chama esse php.

 

Coloque em seu servidor e teste antes de fazer qualquer modificações, pois poderá haver erros de compatibilidade. Caso isso ocorra execute somente o php digitando o endereço apenas dele na barra de endereço. E você verá o erro.

 

Para baixar o arquivo da explicação

formfacil.zip

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá berseck

 

 

muito bem detalhado o tutorial

 

só um "pitaco", como você deve ter lido num outro tópico aqui, é bem melhor você usar o LoadVars, do que o loadVariablesNum, esta até esta em

desuso desde o flash 8, que tal fazer uma alteração para mostrar como ficaria se usasse ele?

 

qualquer coisa é só falar

 

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu servidor roda php? =X

 

Pois esse código foi testado diversas vezes antes de eu postar =/

 

------------------ EDITADO -----------------------

 

O meu tutorial foi editado para usar LoadVars () uma vez que como o Eder disse não é mais utilizado LoadVariablesNum

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Berseck

 

Achei bem explicado esse tuto sobre form em flash com PHP, mas estou com 1 problema.

 

Estou fazendo um website e coloquei meu index pra ficar fixo no fundo e o conteudo dele ir abrindo por cima do index.

 

O conteudo está em um swf diferente e ele aparece somente quando clico no botão correspondente.

 

Até aí tudo bem, mas como gostaria de colocar um form nesse website, usei o form do seu tutorial, mas quando tento testar ele para abrir por cima do meu index do mesmo modo como coloquie os outros swf, os intpu text não aparecem.

 

Por acaso você saberia dizer o porque isso ocorre???

 

Fico no aguardo da resposta.

 

Abraçosss

 

Broka

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom o problema acho que foi resolvido... Basta criar um botão no palco... que chama um clip alvo no qual vai conter o formulário que ai estará tudo resolvido :)

 

on(press){
 loadMovie("formfacil.swf", alvo);
}

Se coloca esse comando no botão e coloca um MovieClip no palco e o instancie de alvo ;) e pronto ta ae feitinho

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo...

 

bom eu segui todos os passos ta tudo bonitinhum so n ta enviando o e-mail

 

e na caixa de texto Nome: ta aparecendo o segundo dentro dela "_level0.flashmo_contents.instance27.name"

 

oq será q ocorreu?

 

valeu...

 

Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você colocou a variável do campo de texto

Em vez de instancia-lo?

 

Se colocou você precisa chamar

Como falo lá no começo o complemento de deixar vazio

name = "";

Ou se tiver dentro de um clip

 

_root.caminhodoclip.name = "";

 

Para zerar isso.

 

Esse código acima foi feito para se usar no palco.

 

Como você ta usando fora do palco

Instancie os campos de texto como

nome

email

assunto

mensagem

 

Ai na hora de chamar as variaveis:

var obj_s = new LoadVars();
var obj_l = new LoadVars();
obj_s.nome = nome.text; //Valor do nome
obj_s.assunto = assunto.text;
obj_s.email = email.text;
obj_s.mensagem = mensagem;
obj_s.sendAndLoad("mail.php",obj_l,"POST");// pode-se usar GET ou POST use o que achar melhor

stop();
intervalo = function() {
prevFrame();
clearInterval (tempo);
}
tempo = setInterval (intervalo, 1800);

Assim você vai pegar os valores do campo de texto e enviar ;)

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa amigo foi falta de atenção minha mesmo...

 

ta tudo certo agora.

 

me fala uma coisa o e-mail q eu coloca no codigo PHP por ex. pode ser o meu e-mail q ele manda ou n?

 

pq tipo se puder eu ja fiz isso e n chego a msg, será q eu fiz algua coisa de errado?

 

n sei se tem algua coisa ave eu dei o Cont+enter pra roda e enviei por pelo flash mesmo o site execultando. isso impede algua coisa?

 

ou so fuciona se o site estive postado em um host ou algo do tipo...

 

muitas perguntas ne...

 

malz aew por abusar. :rolleyes:

 

des de ja obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom o formulário de e-mail pede um PHP.... logo ele só roda em um servidor... seja interno com função de mail-sender

 

Ou externo...

 

Mas com ctrl + enter não vai rodar nunca kkkkk

 

E pode ser qualquer e-mail que você coloque ali onde é pra receber a mensagem!

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

É engraçado, tem sempre alguma coisa pra noob pra dar errado.. rsrs..

 

bersek, me da um help aee please!!!

 

O códogo das ACTIONS e do PHP aparentemente estão corretos, segui as orientações do tutorial, mas n recebi nenhum e-mail até agora.. ja to quebrando a cabeça aki e n detectei erro (provavelmente por ser noob).. me da uma força aee.. a única coisa q não acontece é mandar para o email..

 

Voce pode verificar o formulario exemplo AQUI

 

Segue os codigos:

 

 

 

ACTIONS:

 

NA 1° AS

stop();
Nome = "";
Email = "";
Empresa = "";
Cnpj = "";
InscEstadual = "";
Endereco = "";
NumeroEnd = "";
Bairro = "";
Cidade = "";
Estado = "";
Cep = "";
DDDTel = "";
Telefone = "";
DDDCel = "";
Celular = "";
DDDFax = "";
Fax = "";
Observacao = "";
Status = "";

NA ULTIMA AS

var obj_s = new LoadVars();
var obj_l = new LoadVars();
obj_s.Nome = Nome; //Valor do nome
obj_s.Email = Email;
obj_s.Empresa = Empresa;
obj_s.Cnpj = Cnpj;
obj_s.InscEstadual = InscEstadual;
obj_s.Endereco = Endereco;
obj_s.NumeroEnd = NumeroEnd;
obj_s.Bairro = Bairro;
obj_s.Cidade = Cidade;
obj_s.Estado = Estado;
obj_s.Cep = Cep;
obj_s.DDDTel = DDDTel;
obj_s.Telefone = Telefone;
obj_s.DDDCel = DDDCel;
obj_s.Celular = Celular;
obj_s.DDDFax = DDDFax;
obj_s.Fax = Fax;
obj_s.Observacao = Observacao;
obj_s.sendAndLoad("cadastrotk.php",obj_l,"POST");

stop();


intervalo = function() {
gotoAndStop(1);	 \\ALTEREI A FUNÇÃO
clearInterval (tempo);
}
tempo = setInterval (intervalo, 10000);  \\AUMENTEI O TEMPO

 

CODIGO PHP

<?php
// adicione seu e-mail na linha abaixo
$recipient = "xxxxxx@xxxxxx.com";


$subject = "Cadastro de Clientes do site www.xxxxxx.com";

$Nome = $_POST['Nome'];
$Email = $_POST['Email'];
$Empresa = $_POST['Empresa'];
$Cnpj = $_POST['Cnpj'];
$InscEstadual = $_POST['InscEstadual'];
$Endereco = $_POST['Endereco'];
$NumeroEnd = $_POST['NumeroEnd'];
$Bairro = $_POST['Bairro'];
$Cidade = $_POST['Cidade'];
$Estado = $_POST['Estado'];
$Cep = $_POST['Cep'];
$DDDTel = $_POST['DDDTel'];
$Telefone = $_POST['Telefone'];
$DDDCel = $_POST['DDDCel'];
$Celular = $_POST['Celular'];
$DDDFax = $_POST['DDDFax'];
$Fax = $_POST['Fax'];
$Observacao = $_POST['Observacao'];

$msg = "Nome: $_POST['Nome'] \n\nEmail: $_POST['Email'] \n\nEmpresa: $_POST['Empresa'] \n\n$Cnpj: $_POST['Cnpj'] \n\nInscEstadual: $_POST['InscEstadual'] \n\nEndereco: $_POST['Endereco'] \n\nNumeroEnd: $_POST['NumeroEnd'] \n\nBairro: $_POST['Bairro']
\n\nCidade: $_POST['Cidade'] \n\nEstado: $_POST['Estado'] \n\nCep: $_POST['Cep']
\n\nDDDTel: $_POST['DDDTel'] \n\nTelefone: $_POST['Telefone'] \n\nDDDCel: $_POST['DDDCel'] \n\nCelular: $_POST['Celular']
\n\nDDDFax: $_POST['DDDFax'] \n\nFax: $_POST['Fax'] \n\nObservacao: $_POST['Observacao']";


// adicione seu e-mail na linha abaixo
$mailheaders = "From: xxxxxx@xxxxxx.com";


mail("$recipient", "$subject", "$msg", "$mailheaders");
echo "enviado";
?>

 

Obrigado desde já!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom :)

 

Como eu já disse :P

 

Vou reformular lá em cima :S

 

Utilize a parte de instancia de cada texto dinamico e não use a VAR não =/

E para saber se está enviando o e-mail adicione esse if no php:

if(isset($_POST['email']){
//codigo todo do php aqui
}else{
echo "Não recebi as variáveis";
}

E use a instancia da variável e na parte de botão de enviar... ou no proximo frame

Coloque um trace(obj_s.email)

 

Dentro dessa função:

intervalo = function() {
gotoAndStop(1);	 \\ALTEREI A FUNÇÃO
clearInterval (tempo);
}
tempo = setInterval (intervalo, 10000);  \\AUMENTEI O TEMPO

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu raciocinio logico pifou.. n consegui entender nem como colocar esse ponto aki:

 

Coloque um trace(obj_s.email)

Dentro dessa função:

intervalo = function() {
gotoAndStop(1);	 \\ALTEREI A FUNÇÃO
clearInterval (tempo);
}
tempo = setInterval (intervalo, 10000);  \\AUMENTEI O TEMPO

Compartilhar este post


Link para o post
Compartilhar em outros sites

adicionando o nome na instancia dos textos e alterando o script para nome.text e das demais instancias conforme informado o botão de ENVIAR pára de funcionar, ele fica sempre informando que o campo nome esta vazio, mesmo q n esteja vazio..

 

fiz um teste com o formulario que você deixou postado para download, alterei os dados e variaveis, incluí todas q eu preciso e funcionou direitinho, mas na hora de puxar ele como mc externo ele para de funcionar.. daí tentei fazer como você disse e agora acontece o q escrevi com o botão enviar..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom ai o problema é que você tem que por .text tbm para confirir...

 

Veja lá em cima o código de como se faz.

 

 

O código deveria funcionar perfeitamente em um clip externo pois ele trabalha com as variaveis internas e nenhuma global.

Como está funcionando esse seu mc externo??? os botões estão dentro dele??? ou ta com botões de fora?

 

Quando eu escrevi

Coloque um trace(obj_s.email)

 

Dentro dessa função:

 

intervalo = function() {

gotoAndStop(1); \\ALTEREI A FUNÇÃO

clearInterval (tempo);

}

tempo = setInterval (intervalo, 10000); \\AUMENTEI O TEMPO

Eu quis dizer:

intervalo = function() {
trace(obj_s.email);
gotoAndStop(1);	 \\ALTEREI A FUNÇÃO
clearInterval (tempo);
}
tempo = setInterval (intervalo, 10000);  \\AUMENTEI O TEMPO

 

O flash é um programa que decopila programas... que quem faz é você...

Para verificar se uma variavel ou outra está funcionando

Sempre utilize trace(varivavel), para saber se esta entrando dentro de um if tbm...

Assim por diante.

 

trace() para programador em flash é um decopilador de erros... então use-o o maximo que puder.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia,

 

berseck

 

Então cara, o link q eu tinha deixado era o mesmo formulario q estava importando.. mas tinha acontecido outros problemas:

Já q estava com problema em importar o filme e o formulario n funcionar, resolvi integrar ele no proprio filme principal.. beleza.. os codigos começaram a funcionar certinho, maravilha.. falei comigo: ÓTIMO, FINALMENTE CONSEGUI RESOLVER.. mas aí na aconteceu outro problema, qdo fui jogar os arquivos na hospedagem do cliente tinha parado de funcionar..

E pra descobrir agora??? A hospedagem do cara era Locaweb plataforma Windows, e a minha q eu tinha testado era UOLHOST plataforma Linux.. depois de muito procurar vi q o problema estava nas especificações de formatação do codigo PHP e nos cabeçalhos q tinham q ser diferentes.. mas mesmo a propria Locaweb me passando o tutorial deles não funcionou.. acabei conseguindo um código antigo, feio, sem formatação nenhuma mas q pelo menos funcionava.. acabei deixando ele mesmo mas ainda estou tentando resolver a especificação do codigo pela Locaweb pq vi q tem muitas, mas muitas pessoas mesmo com a mesma dificuldade.. e quero resolver isso pra pelo menos deixar postado em algum topico pro pessoal saber como resolver..

 

Mas mesmo assim cara, muito obrigado pela atenção pois aprendi a fazer um formulário dahora e bem formatado.. (incluí tags html no form PHP).. e que funciona em hospedagem Linux tranquilamente e perfeitamente.. só ficou a dificuldade em plataforma Windows, mas isso eu continuo procurando..

 

Muito obrigado.. Abraços..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mto bem...

 

Se quiser da uma olhada nos outros formulários que tem aqui no forum com tutoriais...

Que tem formatação html tbm :)

 

Esse aqui é um literalmente sem formatação :D

Pra não ter erros nem problemas >< só que as vezes da problema de servidor para servidor ai complica.

 

Mas num todo ta tudo certo ;)

 

Parabens

http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola a todos envio o e-mail mais ficou assim:

 

Imagem Postada

 

 

Não tenho nem um pouquinho de ideia aonde ta o problema x.x

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, o meu formulário eu fiz no CS4 e usando AS2 com flashplayer 8....

 

Fiz assim:

 

Criei os campos de texto input, dei nome de Variables pra cada um deles....

 

Depois no frame do botão enviar coloquei:

 

on (release) {
if (nome eq "" or mail eq "" or  telefone eq "" or msg eq "" or estado eq "") {
stop();
} else {
loadVariablesNum("form.php", 0, "POST");
gotoAndStop(30);
}
}

 

Depois no PHP coloquei assim:

 

 

<?php
$msg.='Nome:'.$_POST['nome']."\n";

$msg.='Email:'.$_POST['mail']."\n";

$msg.='Telefone:'.$_POST['telefone']."\n";

$msg.='Estado:'.$_POST['estado']."\n";

$msg.='Mensagem:'.$_POST['msg']."\n";

mail("andre@gmail.com.br" , "CONTATO" , $msg);
?>

 

 

O que ocorre é que ele recebe o email com a mensagem perfeita com tudo que eu escrevi, masssss, junto com a mensagem vem toda a formatação de texto.... assim:

 

Nome:<TEXTFORMAT LEADING="2"><P ALIGN="JUSTIFY"><FONT FACE="Arial" SIZE="12" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0">Andre</FONT></P></TEXTFORMAT>

Email:<TEXTFORMAT LEADING="2"><P ALIGN="JUSTIFY"><FONT FACE="Arial" SIZE="12" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0">andre@gmail.com</FONT></P></TEXTFORMAT>

Telefone:<TEXTFORMAT LEADING="2"><P ALIGN="JUSTIFY"><FONT FACE="Arial" SIZE="12" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0">(21) 2222-2222</FONT></P></TEXTFORMAT>

Estado:<TEXTFORMAT LEADING="2"><P ALIGN="JUSTIFY"><FONT FACE="Arial" SIZE="12" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0">Rio de Janeiro</FONT></P></TEXTFORMAT>

Mensagem:<TEXTFORMAT LEADING="2"><P ALIGN="JUSTIFY"><FONT FACE="Arial" SIZE="12" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0">esta eh uma msg de teste</FONT></P></TEXTFORMAT>

 

 

 

Alguém sabe onde eu errei?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.