Ir para conteúdo

POWERED BY:

Arquivado

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

Thiago de Oliveira Cruz

[TUTORIAL] formulário de email fácil em AS3 + PHP

Recommended Posts

Valeu pena Informação bersek.... funcionou certinho e não deu nenhum erro!

mais não chega nada no meu email...=(

 

Vou te mostrar meus códigos p/ você ve se tem alguma coisa errada.

 

Código flash

 

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 = "";
 }

Código mail.php

 

<?php
$nome = $_POST['nome'];
$mensagem = $_POST['mensagem'];
$email = $_POST['email'];

// adicione seu e-mail na linha abaixo
$recipient = "email@gmail.com";

$subject = "formulário de contato";

$msg = "nome: $nome \n\nE-mail: $email \n\nMensagem: $mensagem";

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

$ok = mail("$recipient", "$subject", "$msg", "$mailheaders");
if($ok){
	echo '&ok=1&';
}else {
	echo '&ok=2&';
}
?>

Outra coisa eu fiz o este que você comentou no tópico... digitar www.nomesite.com.br/mail.php

aparece essa mensagem "&ok=1&" isso quer dizer que funciona ou não PHP no meu servidor?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como escrevi na resposta no outro tópico.

Você tem de ver se o e-mail requer autentificação.

 

E-mail como gmail eu sei que funciona, pois testei com ele.

Tbm funciona no @hotmail

 

Ou seja a maioria dos e-mails free deve funcionar, pois não precisam de autentificação com login e senha para envio.... pelo menos em suma maioria.

Nos e-mails da minha empresa por regras de segurança precisa usar o SMTP e ai é outro formulário como eu havia dito. Pesquise a respeito.

 

Mas antes de tudo verifique sua caixa de spam! Pois pode estar lá.

 

Se quiser ver um exemplo do e-mail funcionando:

http://thiago.host56.com/contact/

 

Ai ta funcionando exatamente esse formulário sem tirar nem por.

Só que com meu e-mail claro ;)

 

Então verifique tudo isso, se o e-mail utilizado precisa de SMTP, se não precisar verifique a caixa de spam.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bersek Funcionou, pois tirei o "from:" do mail.php

é normal isso? as mensagens chega como o nome Nobody!

 

Outra pergunta Bersek a acentuação dele não está funcionando, fica tudo desconfigurado.

como faço p/ arrumar?

 

abraços

 

<?php
$nome = $_POST['nome'];
$mensagem = $_POST['mensagem'];
$email = $_POST['email'];

// adicione seu e-mail na linha abaixo
$recipient = "designerwf@gmail.com";

$subject = "formulário de contato";

$msg = "nome: $nome \n\nE-mail: $email \n\nMensagem: $mensagem";

// adicione seu e-mail na linha abaixo
$mailheaders = "[ele só funciona sem esse from:]from:designerwf@gmail.com";

$ok = mail("$recipient", "$subject", "$msg", "$mailheaders");
if($ok){
	echo '&ok=1&';
}else {
	echo '&ok=2&';
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

O mailheaders ou cabeçálio é normalmente o e-mail de onde está vindo.

 

Você pode declarar seu WEBSITE se quiser em vez de deixar o nobody.

E você leu o que eu coloquei na resposta as suas perguntas no outro tópico?

 

Pois já expliquei como resolve a acentuação.

 

Temos algumas maneiras de resolver

 

1 - Embed nas caixas de texto para latin

2 - Colocar o código no flash System.useCodepage = true

3 - Colocar a formatação desejada no headers do PHP, iso ou UTF-8

 

Essas são as coisas que você deve mexer... por padrão o headers não deveria ser alterado... pois ele já é utf-8 assim como a maioria dos e-mails... então você só tem que fazer as duas opções anteriores.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi berseck, só de curiosa.

 

Baixe o fla do seu blog faz algum tempo, não reparei se houve alguma atualização posterior. Ainda não testei online. Mas quero ver isso.

 

Observei que o botão Limpar (Reset), acionado quando a mensagem de status acusa erro no preenchimento limpa os campos mas a mensagem permanece.

 

Ao testar o form com Ctrl + Enter informa que está "enviando".

 

Você também sugere embedar os campos de texto dinâmico para solucionar a acentuação (Latin 4 opções). Em outras situações (botões em array) o que funcionou foi usar Embedding--> Uppercase + Lowercase + Punctuation + Latin I (dica do Eder).

 

Porque a insistência em usar o "System.useCodepage = true"? certo, está na documentação da Adobe, mas até o momento não conheci nenhum exemplo onde incluir esta linha faça alguma diferença.

 

Tenho interesse em conhecer outras possibilidades de form em AS3 + PHP.

 

São algumas diferenças que observei em relação ao form (bala) que uso, daí o interesse em perguntar. Funfa beleza com seu auxílio e de outro colega do fórum. Uhuuuu!!!

 

Abraços

 

PS: Começo em 5 de abril meu curso de AS3 (lógica com modelagem SQL + AS3), estou estudando por conta com o DVD do Erick Souza. Penso antes em fazer outro curso de Lógica (em março) com orientação a objetos (voltado ao Java). Já adquiri o Guia de Referência Rápida, o Essential AS 3.0 e esta semana deve chegar o Object-Oriented AS3. Me aguarde.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom o código System.useCodePage = true

 

Funciona sim se você estiver trabalhando com utf-8 em tempo integral, mas a maioria dos brasileiros trabalha com iso-8859-1 e ai não adianta nada... pois System.useCodePage é apenas para UTF-8

 

Devem existir alguns bugs no código... eu fiz esse código ai basicamente a 1 ano atrás... quando ainda tava aprendendo a mexer com AS 3 e algumas coisas... fiz baseado no meu form de AS2 que tbm continha erros...

 

Sei que ele funciona, pois ele está online em meu website e as pessoas usam ele sem problema nenhum =)

Só alterei o tamanho dele e coloquei uns campos a mais como a maioria dos usuários aqui pede para fazer haha.

 

;)

 

Qualquer dia desses posto um form mais completo em AS 3, com todas as explicações devidas e montando ele automaticamente... assim basta o cara copiar e colar o código ;)

 

Mas enquanto não o faço =) tem 2 exemplos meus em AS2, 1 com anexo outro sem... e esse em AS3.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então tá! Sabia que tava bisoiando!

 

Mas que o meu tá bem bão, ninguém pode negar. Ralei muito.

 

Abraços amigo querido.

 

 

 

Já sabe, ainda nem comecei a perguntar, rsrsrs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá berseck , poderia me ajudar

 

Estou criando uma caixa de email em flash e formulario php

quando exporto ela funciona normalmente , mas quando subo para o servidor e testo na net ele não funciona

 

eis o php :

 

<?php

//coloque o email de destinatário:

$enviaPara = 'igor.hos@gmail.com';

 

//Criamos variaveis PHP que recupera as Variaveis criadas no Flash

$campoNome = $_POST['nomePhp']; //retorna o valor digitado no campo "nomeTxt" do Flash

$campoEmail = $_POST['emailPhp']; //retorna o valor digitado no campo "emailTxt" do Flash

//$campoTelefone = $_POST['telefonePhp'];

$campoAssunto = $_POST['assuntoPhp']; //retorna o valor digitado no campo "assuntoTxt" do Flash

$campoMensagem = $_POST['mensagemPhp']; //retorna o valor digitado no campo "mensagemTxt" do Flash

 

//Assunto padrão do seu e-mail

$subject = 'Contato Smith: Mensagem de ' . $campoNome;

 

//Monta o corpo da mensagem enviada

$mensagem = "Nome: ".$_POST['nomePhp']." \n";

$mensagem .= "E-mail: ".$_POST['emailPhp']." \n";

$mensagem .= "Telefone:".$_POST['telefonePhp']." \n";

$mensagem .= "Assunto: ".$_POST['assuntoPhp']." \n\n";

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

//e-mail do remetente:

$mail_headers = 'From: '.$_POST['emailPhp'];

 

//envia o e-mail

mail($enviaPara, $subject, $mensagem, $mail_headers);

?>

 

 

eis o as3:

 

stop();

var tempoMensagem:Timer; //intervalo entre mensagens de aviso

var variaveis:URLVariables; //receber dados no flash pra enviar pro script php

var urlPhp:URLRequest; //vai armazenar o arquivo php externo

var loader:URLLoader; //carregar e comunicar com arquivo php

 

//iniciamos o programa

init();

//telefoneTxt.restrict = " 0-9 ";

 

 

/***************************

* FUNÇÕES

* Toda mecânica está separada em pequenas funções

****************************/

 

//inicia e configura todo o programa

function init():void

{

//habilitamos acentuação

System.useCodePage = true;

 

//limpamos todos os campos de texto antes de começar.

limpaTodosCamposTextos();

 

//cria o Timer com 3 segundos(3000 milesegundos) executa quandoTempoAcabar() apenas 1 vez.

tempoMensagem = new Timer(3000, 1);

tempoMensagem.addEventListener(TimerEvent.TIMER, quandoAcabarTempo);

 

//quando clicar no botão executa a função enviaMensagem();

enviarBtn.addEventListener(MouseEvent.CLICK, quandoEnviarBtn);

}

 

 

//função de evento, executa a quando clicar no botao enviarBtn

function quandoEnviarBtn(e:MouseEvent):void

{

verificaDadosAntesDeEnviar();

}

 

 

/* Verificar e se qualquer um dos campos estão vazios ou incorretos,

* caso esteja errado, mostra mensagem de aviso.

* Se não, no final envia começa enviar os dados...*/

function verificaDadosAntesDeEnviar():void

{

 

if(nomeTxt.length < 3)

{

mostraMensagemAviso("Coloque um nome com pelo menos 3 letras");

}

else if(emailTxt.length == 0)

{

mostraMensagemAviso("Preciso do seu e-mail pra te responder.");

}

 

else if(emailTxt.text.indexOf("@") == -1 ||

emailTxt.text.indexOf(".") == -1)

{

mostraMensagemAviso("Ops! Esse e-mail não é valido!");

}

else if(telefoneTxt.text.indexOf ("a-z") == 1)

{

mostraMensagemAviso("Seu telefone está errado");

}

else if(assuntoTxt.length == 0)

{

mostraMensagemAviso("Insira um assunto.");

}

else if(mensagemTxt.length == 0)

{

mostraMensagemAviso("Ahh! Não esquece da mensagem.");

}

else{

enviaDadosParaPHP();

}

}

 

 

//responsável por interagir informação do Flash com script PHP

function enviaDadosParaPHP():void

{

mostraMensagemAviso("Enviando mensagem...");

 

/* iniciamos e criamos variaveis dinamicas

* que recebem o conteúdo digitado nos campos do flash

* essas variáveis servirão de ponto entre o Flash e script PHP */

variaveis = new URLVariables();

variaveis.nomePhp = nomeTxt.text;

variaveis.emailPhp = emailTxt.text;

//variaveis.telefonePhp = telefoneTxt.text;

variaveis.assuntoPhp = assuntoTxt.text;

variaveis.mensagemPhp = mensagemTxt.text;

 

 

/* iniciamos variavel que tem o arquivo PHP

* devemos aplicar método POST de envio de dados

* e transmitimos os dados dos campos do Flash para o script PHP */

urlPhp = new URLRequest("http://www.smith.com.br/envio_email2.php");

urlPhp.method = URLRequestMethod.POST;

urlPhp.data = variaveis;

 

/* iniciamos variavel responsável por "recuperar" dados/informações do PHP

* quando estiver completo o carregamento do arquivo PHP, executa a função que confirma envio.

* quando surgir erro durante o envio, executa a função que mostra mensagem de erro.

* e carregamos o arquivo PHP armazenado na variavel urlPhp */

loader = new URLLoader();

loader.addEventListener(Event.COMPLETE, quandoEnviadoMensagem);

loader.addEventListener(IOErrorEvent.IO_ERROR, quandoHouverErroNoEnvio);

loader.load(urlPhp);

 

}

 

 

//Função de evento, mostra ao usuário que a mensagem foi enviada com sucesso.

function quandoEnviadoMensagem(e:Event):void

{

mostraMensagemAviso("Mensagem enviada!");

//iniciatempoMensagemDeAviso();

limpaTodosCamposTextos();

}

 

 

//Função de evento, mostra ao usuário que houve algum erro durante o envio.

function quandoHouverErroNoEnvio(e:IOErrorEvent):void

{

mostraMensagemAviso("Ops! Surgiu erro! Tenta novamente.");

iniciatempoMensagemDeAviso();

}

 

 

//Função de evento do Timer, limpa o campo de aviso, função do Timer

function quandoAcabarTempo(e:TimerEvent):void

{

mostraMensagemAviso("");

}

 

 

/* Limpa todos os campos de textos digitados pelo usuário

* depois aplica foco do cursor de texto no campo nomeTxt */

function limpaTodosCamposTextos():void

{

nomeTxt.text = emailTxt.text = assuntoTxt.text = mensagemTxt.text = "";

stage.focus = nomeTxt;

}

 

 

/* Destinada pra enviar mensagem de aviso

* e apaga esse aviso após 3 segundos usando timer.*/

function mostraMensagemAviso(texto:String):void

{

avisoTxt.text = texto;

}

 

 

/* Destinado pra reiniciar e iniciar intervalo Timer

* Pra não atropelar o tempoMensagem de cada mensagem de aviso que foi disparada antes*/

function iniciatempoMensagemDeAviso():void

{

tempoMensagem.reset();

tempoMensagem.start();

}

 

Se for algo errado com meu código , perdoe meu erro , mas verifiquei e nada

se puder me ajudar agradeço

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom gostaria que você utiliza-se a tag code <> quando for colocar um código ou [ code e fechar com o ]

Assim você poder postar códigos mais fácilmente... e fica melhor organizado

 

Mas qual o erro? porque o AS 3 não tem erro e o mail tbm não.

 

Aqui é:

mostraMensagemAviso("Ops! Surgiu erro! Tenta novamente."); TENTE novamente :P

 

O que acontece?

Não envia o e-mail???

 

Você envia e nunca chega resposta??? que acontece?

 

Explica melhor porque teu código... fora que tem umas partes comentádas que não vão ser enviadas para o php... e ele vai tentar colocar vazia...

Mas isso seria um notification e não um erro.

 

Tente remover o telefone do php tbm para testar uma vez que você comentou ele no flash.

 

E use variaveis de retorno para saber se o problema é no php...

 

Tente rodar o php diretamente... coloque todas as variaveis que você ta pegando com POST na mão mesmo... e rode o mail.php pela url e veja se ele roda ou retorna algum erro na sua tela.

Se não retornar erro nenhum você tem que ficar com tela branca, uma vez que não tem echo de retorno.

 

Caso venha qualquer coisa sem ser tela branca... você tem erro no seu php ;)

 

Abraços

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.