Ir para conteúdo
Fórum Script Brasil
  • 0

Flash + PHP - Problema ao enviar


Nittho Lima

Pergunta

É pessoal, fiz um form em flash + asp, depois de feitos os testes quando fui colocar em produção descobrir q o provedor do cliente não suporta Flash e sim PHP, então tive que mudar.

É o seguinte, fiz o form, a mensagem é enviada, confirmei no email e lá estava ela, mais quando clico no botão enviar, aparece a mensagem d erro "Erro ao enviar", segue os códigos.

<?php

// Declarando as variaveis e formatando com utf-8
$nome = utf8_decode(@$_POST['nome']);
$email = utf8_decode(@$_POST['email']);
$endereco = utf8_decode(@$_POST['endereco']);
$ddd = utf8_decode(@$_POST['ddd']);
$telefone = utf8_decode(@$_POST['telefone']);
$mensagem = utf8_decode(@$_POST['mensagem']);

// Montando o e-mail
$para = "artgraf@artgrafinformatica.com";
$assunto = "Formulario de contato";
$corpo .= "Nome = $nome .\n";
$corpo .= "E-mail = $email .\n";
$corpo .= "Endereço = $endereco .\n";
$corpo .= "DDD = $ddd .\n";
$corpo .= "Telefone = $telefone .\n\n";
$corpo .= "\n\n=====================================\n";
$corpo .= "Esse formulário foi enviado atráves do Site www.formapronta.com.br .\n";
$corpo .= "========================================";
// Mensagem resposta
echo ("&resultado=true!&");
mail("$para","$assunto","$corpo","$headers");

?>
FLASH
// Iniciando o formulário com todos
// os campos limpos.
function iniciar() {
nome_txt.text = "";
email_txt.text = "";
endereco_txt.text = "";
ddd_txt.text = "";
telefone_txt.text = "";
mensagem_txt.text = "";
};

// Depois criei a function enviaDados, que tem a função de coletar os dados do Flash e enviar ao PHP:

// Função que coleta os dados no Flash e enviar
// para o PHP.
function enviaDados() {
resposta_txt.text = "";
if (nome_txt.text eq "") {
resposta_txt.text = "*Preencha o campo 'Nome'";
Selection.setFocus("nome_txt");
} else if (email_txt.text eq "") {
resposta_txt.text = "*Preencha o campo 'E-mail'";
Selection.setFocus("email_txt");
} else if (email_txt.text.indexOf("@", 0) <= 0 || email_txt.text.indexOf(".", 0) <= 2) {
resposta.text = "*O e-mail informado é inválido";
Selection.setFocus("email_txt");
} else if (mensagem_txt.text eq "") {
resposta_txt.text = "*Digite uma mensagem para nós…";
Selection.setFocus("mensagem_txt");

} else {
var objEnvia = new LoadVars();
objEnvia.nome = nome_txt.text;
objEnvia.email = email_txt.text;
objEnvia.endereco = endereco_txt.text;
objEnvia.ddd = ddd_txt.text;
objEnvia.telefone = telefone_txt.text;
objEnvia.mensagem = mensagem_txt.text;
var objRecebe = new LoadVars();
objRecebe.onLoad = function() {
if (objRecebe.myData == "true") {
resposta_txt.text = "";
resposta_txt.text = "E-mail enviado!!!";
nome_txt.text = "";
email_txt.text = "";
endereco_txt.text = "";
ddd_txt.text = "";
telefone_txt.text = "";
mensagem_txt.text = "";
} else {
resposta_txt.text = "Erro ao enviar!!!";
}// end else if
};
objEnvia.sendAndLoad("enviaEmail.php",objRecebe,"POST");
}// end else if
};

// Codificando o botão enviar
enviar_btn.onRelease = function() {
enviaDados();
}

AGRADEÇO A AJUDA E PEÇO DESCULPAS A POOH QUE ME AJUDOU NO FORM FLASH+ASP.

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Olá Nitho ^_^

Problemas não há, alguen um dia vai precisar dele mesmo :P

Bom vamos lá !

Analizei seu código e vi algo meio peculiar :)

não sei dizer se é meu conhecimento qeu me falha mas parece estar enviando "true!" ao invés de "true"

Por imagino que jamais vai conseguir alcançar a condição de "Enviado com sucesso !"

E como no seu antigo script ASP esse script não faz a verificação de se o e-mail foi ou não enviado.

Por isso aconselho a usar o retorno da função mail;

Me lembro de um antigo tutorial que li sobre isso não sei ainda se funciona nem a forma exatamente correta mas podes tentar ^^

seria assim:

if(@mail("$para","$assunto","$corpo","$headers")) {
    echo "true";
}
else {
    echo "false";
}

Tcharam !

deve ter algo na net sobre isso também ^^

Se funcionar, foi um prazer ajudar

Senão, volte sempre !

Abraços

Pooh

Link para o comentário
Compartilhar em outros sites

  • 0

Percebi algo MUUUUUITO peculiar !

objRecebe.myData //não existe !!

Essa propriedade não existe em um objeto LoadVars !

antes da solução uma pequena aula :)

Lembra quando você declarou o loadVars para envio ? Pois então você não adicionou variaveis à ele ?

como por exemplo:

objEnvia.nome = nome_txt.text;

objEnvia.email = email_txt.text;

objEnvia.endereco = endereco_txt.text;

Então concordemos que o objeto receptor do mesmo typo, quando recebido um valor dentor de uma variavel pode acessar este da mesma forma !

resumindo :

PHP

if(mail("$para","$assunto","$corpo","$headers")) {
    echo "&minhaVar=true&";
}
else {
    echo "&minhaVar=false&";
}
Basta agora acessarmos o objeto que recebeu esta resposta como objRecebe.minhaVar e Tcharam ! temos o resultado ^_^ ou requistarmos a propriedade "Loaded": no seu if temos então duas alternativas:
if (objRecebe.minhaVar == "true") {
//OU
if (objRecebe.loaded == "true") {

É preferível a primeira opção pois podes ter mais de uma variavel, nesse caso funcionaria uma beleza mas num caso de conversação o programa se atrapalharia pois a ultima variavel enviada ficaria sendo a resposta de "loaded"

Simples ?

Espero ter ajudado :D

abraços

Pooh

Editado por Pooh
Link para o comentário
Compartilhar em outros sites

  • 0

Então meu código flash ficaria assim, só alterando a linha "if (objRecebe.minhaVar == "true") {":

// Iniciando o formulário com todos
// os campos limpos.
function iniciar() {
nome_txt.text = "";
email_txt.text = "";
telefone_txt.text = "";
empresa_txt.text = "";
mensagem_txt.text = "";
};

// Depois criei a function enviaDados, que tem a função de coletar os dados do Flash e enviar ao PHP:

// Função que coleta os dados no Flash e enviar
// para o PHP.
function enviaDados() {
resposta_txt.text = "";
if (nome_txt.text eq "") {
resposta_txt.text = "*Preencha o campo 'Nome'";
Selection.setFocus("nome_txt");
} else if (email_txt.text eq "") {
resposta_txt.text = "*Preencha o campo 'E-mail'";
Selection.setFocus("email_txt");
} else if (email_txt.text.indexOf("@", 0) <= 0 || email_txt.text.indexOf(".", 0) <= 2) {
resposta.text = "*O e-mail informado é inválido";
Selection.setFocus("email_txt");
} else if (empresa_txt.text eq "") {
resposta_txt.text = "*Preencha o campo 'empresa'";
Selection.setFocus("empresa_txt");
} else if (mensagem_txt.text eq "") {
resposta_txt.text = "*Digite uma mensagem";
Selection.setFocus("mensagem_txt");

} else {
var objEnvia = new LoadVars();
objEnvia.nome = nome_txt.text;
objEnvia.email = email_txt.text;
objEnvia.telefone = telefone_txt.text;
objEnvia.empresa = empresa_txt.text;
objEnvia.mensagem = mensagem_txt.text;
var objRecebe = new LoadVars();
objRecebe.onLoad = function() {
if (objRecebe.minhaVar == "true") {
resposta_txt.text = "";
resposta_txt.text = "E-mail enviado!!!";
nome_txt.text = "";
email_txt.text = "";
telefone_txt.text = "";
empresa_txt.text = "";
mensagem_txt.text = "";
} else {
resposta_txt.text = "Erro ao enviar!!!";
}// end else if
};
objEnvia.sendAndLoad("enviaEmail.php",objRecebe,"POST");
}// end else if
};

// Codificando o botão enviar
enviar_btn.onRelease = function() {
enviaDados();
}
E o PHP assim, alterando "mensagem resposta"
<?php

// Declarando as variaveis e formatando com utf-8
$nome = utf8_decode(@$_POST['nome']);
$email = utf8_decode(@$_POST['email']);
$telefone = utf8_decode(@$_POST['telefone']);
$empresa = utf8_decode(@$_POST['empresa']);
$mensagem = utf8_decode(@$_POST['mensagem']);

// Montando o e-mail
$para = "artgraf@artgrafinformatica.com";
$assunto = "Contato via site";
$corpo .= "Nome = $nome .\n";
$corpo .= "E-mail = $email .\n";
$corpo .= "Telefone = $telefone .\n";
$corpo .= "Empresa = $empresa .\n";
$corpo .= "Mensagem = $mensagem .\n\n";
$corpo .= "\n\n===================================================================\n";
$corpo .= "Esse formulário foi enviado atráves do Site www.formapronta.com.br .\n";
$corpo .= "=====================================================================";

// Mensagem resposta
if(mail("$para","$assunto","$corpo","$headers")) {
    echo "&minhaVar=true&";
}
else {
    echo "&minhaVar=false&";
}

?>

Se for isso ainda está acontecendo a mesma coisa.

Se eu tiver feito algo errado, me desculpe, como falei na cessão flash+asp, não tenho muita intimidade com esses códigos.

Agradeço mais uma vez!

Abraços!

Link para o comentário
Compartilhar em outros sites

  • 0

Se não me engano troquei pouca coisa que não deveria influir, testie aqui e funcionou direito :blink:

aqui estão

PHP:

<?php

// Declarando as variaveis e formatando com utf-8
$nome = utf8_decode(@$_POST['nome']);
$email = utf8_decode(@$_POST['email']);
$endereco = utf8_decode(@$_POST['endereco']);
$ddd = utf8_decode(@$_POST['ddd']);
$telefone = utf8_decode(@$_POST['telefone']);
$mensagem = utf8_decode(@$_POST['mensagem']);

// Montando o e-mail
$para = "diyungh@hotmail.com";
$assunto = "Formulario de contato";
$corpo .= "Nome = $nome .\n";
$corpo .= "E-mail = $email .\n";
$corpo .= "Endereço = $endereco .\n";
$corpo .= "DDD = $ddd .\n";
$corpo .= "Telefone = $telefone .\n\n";
$corpo .= "\n\n=====================================\n";
$corpo .= "Esse formulário foi enviado atráves do Site www.formapronta.com.br .\n";
$corpo .= "========================================";
// Mensagem resposta
if(mail("$para","$assunto","$corpo","$headers")){
    echo("&minhaVar=true&");
}
else{
    echo("&minhaVar=false&");
}

?>
E o flash:
// Iniciando o formulário com todos
// os campos limpos.
function iniciar() {
nome_txt.text = "";
email_txt.text = "";
endereco_txt.text = "";
ddd_txt.text = "";
telefone_txt.text = "";
mensagem_txt.text = "";
};

// Depois criei a function enviaDados, que tem a função de coletar os dados do Flash e enviar ao PHP:

// Função que coleta os dados no Flash e enviar
// para o PHP.
function enviaDados() {
resposta_txt.text = "";
if (nome_txt.text eq "") {
resposta_txt.text = "*Preencha o campo 'Nome'";
Selection.setFocus("nome_txt");
} else if (email_txt.text eq "") {
resposta_txt.text = "*Preencha o campo 'E-mail'";
Selection.setFocus("email_txt");
} else if (email_txt.text.indexOf("@", 0) <= 0 || email_txt.text.indexOf(".", 0) <= 2) {
resposta.text = "*O e-mail informado é inválido";
Selection.setFocus("email_txt");
} else if (mensagem_txt.text eq "") {
resposta_txt.text = "*Digite uma mensagem para nós…";
Selection.setFocus("mensagem_txt");

} else {
var objEnvia:LoadVars = new LoadVars();
var resultado:LoadVars = new LoadVars();
objEnvia.nome = nome_txt.text;
objEnvia.email = email_txt.text;
objEnvia.endereco = endereco_txt.text;
objEnvia.ddd = ddd_txt.text;
objEnvia.telefone = telefone_txt.text;
objEnvia.mensagem = mensagem_txt.text;

objEnvia.sendAndLoad("mail.php",resultado,"POST");

resultado.onLoad = function() {
if (resultado.minhaVar == "true") {
resposta_txt.text = "";
resposta_txt.text = "E-mail enviado!!!";
nome_txt.text = "";
email_txt.text = "";
endereco_txt.text = "";
ddd_txt.text = "";
telefone_txt.text = "";
mensagem_txt.text = "";
} else {
resposta_txt.text = "Fodeu !!!";
}// end else if
};
}// end else if
};

// Codificando o botão enviar
enviar_btn.onRelease = function() {
enviaDados();
}

Unica diferença foi a posição em que coloquei o "onLoad" e mudei pra ficar mais reconhecível o nome do seu objRecebe para 'resultado'

qualquer coisa confira o link: Formulario funcionando

abraços

Pooh !

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...