01

Feb 09

AS3.0 – Enviar Email do flash para php

&mensagemTutorial – AS3.0 – Formulário de Email

O objetivo deste tutorial é demonstrar como enviar dados para um arquivo php, também serve para asp!

Este exemplo será sobre o envio de email.

Vamos começar com o php!

crie um arquivo no seu editor e nomeie o de email.php

Código em php para envio de email – este é um código padrão que uso quando quero enviar um email. Para configurar qual email enviar, e configurar o assunto da mensagem, basta modificar parte do php referente.

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$ip = $_SERVER['REMOTE_ADDR'];           
$navegador = $_SERVER['HTTP_USER_AGENT']; 
$recipient = "seuemail@dominio.com";
$nome = $_POST["nome"];
$telefone = $_POST["cidade"];
$mensagem = $_POST["mensagem"];
$subject = "Assunto do email";
$msg = "Nome:$nome\nCidade:$telefone\nMensagem:$mensagem\nIP:$ip\nNavegador:$navegador";
$mailheaders = $email;
mail("$recipient", "$subject", "$msg", "$mailheaders");
echo "=Mensagem enviada com sucesso!";
?>

!!! Uma dica para qualquer desenvolvedor web é ter sempre aquele códigos básicos que acabam adiantando muito o tempo na programação !!!

Ok, após concluir esta etapa vamos para o Flash

Inicialmente vamos precisar de 3 campos de texto, como input_txt, ele irá ser onde colocaremos os dados para serem enviados.

Instancie estes três campos com os seguintes nomes, a ordem dos campos é conforme você quiser.

nome_txt

cidade_txt

mensagem_txt

Depois desta etapa vamos criar um botão para o envio do email.

Então, crie um botão a seu gosto, do tamanho que desejar, e instancie o nome dele como:

envia_btn

Após ter terminado o botão, vamos para a programação

então para organização, crie uma nova layer e a nomeie com algum nome referente a programação, neste caso vou nomea-lo de acoes

então selecione a keyframe em branco e abre o painel Action (F9)

Agora vamos a programação, é muito importante que evite de copiar e colar, pois assim além de você não aprender, não saberá adicionar novos campos, enfim vá criando acompanhando e entendendo o que está sendo feito…

Vamos começar o Código, vou comentar as linhas para entenderem o que está acontecendo

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
//Código para corrigir os acentos, em uft-8
System.useCodePage = true;
//Esta linha, é responsavel pelo CLICK no botao Enviar, antigo onRelease
envia_btn.addEventListener(MouseEvent.CLICK, sendData);
//Esta função é o inicio do envio, tem uma verificação caso algum campo esteja vazio, no caso voce define quais campos verificar
function sendData(m:MouseEvent) {
if (nome_txt.text == "" || cidade_txt.text == "" || mensagem_txt.text == "") {
aviso_txt.text = "Existem Dados Incompletos";
} else {
sendForPhp();
}
}
//Esta função é para o envio do email, no caso das variaveis para o php.
function sendForPhp() {
//Avisando que está enviando
aviso_txt.text = "Encaminhando Mensagem";
//essa variável é responsável para pegar todas as informações dos inputs, quase igual a antigamente LoadVars (Se não me engano)
var varForPhp:URLVariables = new URLVariables();
// definindo os nomes das variaveis e suas informações
varForPhp.nome = nome_txt.text;
varForPhp.cidade = cidade_txt.text;
varForPhp.mensagem = mensagem_txt.text;
// esta função serve para definir o endereço do php, a forma de envio e as variáveis que serão enviadas
// esta linha mostra o lugar onde se encontra o seu php, como dito, esta na msm pasta que o seu .swf, se estivesse numa pasta diferente, seria então "pasta/email.php"
var phpUrl:URLRequest = new URLRequest("email.php");
//método de envio, como no formulário em html
phpUrl.method = URLRequestMethod.POST;
//as variáveis que serão enviadas para o php
phpUrl.data = varForPhp;
//Esta parte será responsável pelo envio, e verificação se foi ou não enviada
var sendEmail:URLLoader = new URLLoader();
//Esta linha inicia o envio do phpUrl, que foi criado nas linhas anteriores
sendEmail.load(phpUrl);
//Esta linha é se o email for enviado, ele inicia a função sendOk
sendEmail.addEventListener(Event.COMPLETE, sendOk);
//Esta linha é se o email não for enviado, ele inicia a função sendError
sendEmail.addEventListener(IOErrorEvent.IO_ERROR, sendError);
}
function sendOk( e:Event ):void {
trace(" mensagem enviada")
trace(e)
}
function sendError( e:IOErrorEvent ):void {
trace("Erro no Envio do Email")
trace(e)
}

Agora vou adicionar um código para fazer o antigo onSetFocus, muito usado para quando não se tem mt espaço na área de contato.

47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
// este emaranhado de código inicial é o que define o foco ou a saída do foco no texto.
nome_txt.addEventListener(FocusEvent.FOCUS_IN, inFoco);
cidade_txt.addEventListener(FocusEvent.FOCUS_IN, inFoco);
mensagem_txt.addEventListener(FocusEvent.FOCUS_IN, inFoco);
nome_txt.addEventListener(FocusEvent.FOCUS_OUT, outFoco);
cidade_txt.addEventListener(FocusEvent.FOCUS_OUT, outFoco);
mensagem_txt.addEventListener(FocusEvent.FOCUS_OUT, outFoco);
//funcao que modificará o texto qnd for focado
var texto:String = new String;
function inFoco(m:FocusEvent) {
// ele pega o campo que foi focado, e armazena o nome, para uso posterior se caso precisar quando for desfocado
texto = m.target.text;
//verificação caso o campo já esteja preenchido pelo usuário, para não apagar o que o usuário já digitou
if (m.target.text == "Nome") {
m.target.text = "";
trace(texto);
} else {
if (m.target.text == "Cidade - UF") {
m.target.text = "";
trace(texto);
} else {
if (m.target.text == "Mensagem") {
m.target.text = "";
trace(texto);
} 
}
}
}
// função quando o usuário tirar o foco do campo, caso ele esteja vazio, recoloca o nome original do campo, se não ele mantém o que já esta digitado.
function outFoco(m:FocusEvent) {
if (m.target.text == "") {
m.target.text = texto;
}else{
trace("Este campo foi alterado /"+m.target.text) 
}
}

Bom, este tutorial eu postei na comunidade no orkut, FlashPédia, click aqui para ver o link da comunidade

e na comunidade o André Luiz, adicionou uma dica, e vou reproduzi-la aqui…

“Só uma dica…

Não use System.useCodePage = true;

Só fazer o cabeçalho no PHP em UTF-8…

System.useCodePage = true faz com que o flash leia a codificação do sistema e não da página, se o usuário por acaso mudar a codificação do browser vai dar pau na acentuação…

Para outras correções no PHP procure saber sobre a função utf8_encode() do php…”

este foi dizer do André Luiz

Para fazer download do material utilizado no tutorial click aqui

Vote em mim!

Related Posts


Comments

Name

Email

Website

Share your wisdom

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

Come in and find...

Search

Recomendo!

Visit Sponsored Links