Ir para conteúdo

POWERED BY:

Arquivado

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

IAMDIX

[Resolvido] Formulario contato

Recommended Posts

Fala galera,

 

faz um tempo que estou preparando esse formulario e ta dando um erro aqui, seja no servidor wamp instalado no meu pc seja no servidor dedicado pago.

 

No flash não tenhos erro mas rodando o formulario recebo "Erro no envio, tente de novo!"

por isso acredito ser um erro no arquivo php;

tentei mudar o codigo de varias formas mas não manjo quase nada de PHP.

 

PHP

<?php
$enviaPara = 'contato@meuemail.com.br';

$campoNome = $_POST['nome'];
$campoCidade = $_POST['cidade'];
$campoEstado = $_POST['estado']:
$campoTel = $_POST['tel'];
$campoEmail = $_POST['email'];
$campoCheckin = $_POST['checkin'];
$campoCheckout = $_POST['checkout'];
$campoAdultos = $_POST['adultos'];
$campoCriancas = $_POST['criancas'];
$campoComentarios = $_POST['comentarios'];
$escolha = $_POST['escolha'];

$subject = 'E-mail do site';

//Montando o corpo da mensagem
$mensagem = "Nome: ".$_POST['nome']." \n";
$mensagem = "Cidade: ".$_POST['cidade']." \n";
$mensagem = "Estado: ".$_POST['estado']." \n";
$mensagem = "Tel: ".$_POST['tel']." \n";
$mensagem = "Email: ".$_POST['email']." \n";
$mensagem = "Checkin: ".$_POST['checkin']." \n";
$mensagem = "Checkout: ".$_POST['checkout']." \n";
$mensagem = "Adultos: ".$_POST['adultos']." \n";
$mensagem .= "Criancas: ".$_POST['criancas']." \n";
$mensagem .= "Comentarios: ".$_POST['comentarios']." \n";
$mensagem = "escolha: ".$_POST['escolha'];

//e-mail do remetente:
$mail_headers = 'From: '.$_POST['email'];

//envia o e-mail
mail($enviaPara, $subject, $mensagem, $mail_headers);

// Vamos fazer um teste para ver se o email foi enviado corretamente
   if( mail( $para, $assunto, $corpo, $headers ) ) 
   {
       // Caso o email tenha sido enviado pelo provedor, retorna YES
       //echo "&success=yes";
       //$success=0';
       $success='yes';
       echo "&success=".$success;
   }
   else
   {
       // Caso não tenha sido enviado, retorna NO
       //echo "&success=no";
       //$success=1';
       $success='no';
       echo "&success=".$success;
   }
}
?>

 

AS3

stop();

//variaveis
nome_txt.text = "";
cidade_txt.text = "";
estado_txt.text = "";
tel_txt.text = "";
email_txt.text = "";
checkin_txt.text = "";
checkout_txt.text = "";
adultos_txt.text = "";
criancas_txt.text = "";
comentarios_txt.text = "";
msg_txt.text = "";

var escolha:String = new String();
var url_vars:URLVariables = new URLVariables();
var timer:Timer;
var url_loader:URLLoader = new URLLoader ;
var url_request:URLRequest = new URLRequest("testemail.php");
//arquivo send_mail.php tem que estar na mesma pasta 
// caso seja em outro lugar colocar o endereço do link onde está
url_request.method = URLRequestMethod.POST;

//registro eventos
limpar_btn.addEventListener(MouseEvent.CLICK, _limpar);
enviar_btn.addEventListener(MouseEvent.CLICK, _enviar);

//funçoes do sistema;
function init():void
{
   //habilitamos acentuação
   System.useCodePage = false;
}

//outras funçoes

function _enviar(e:MouseEvent):void
{
   /* Verifica se o CheckBox apto 1 foi selecionada */
   if (apto1_ch.selected == true)
   {
       /* A opção foi selecionada */
       /* Armazena na variável escolha o valor Apto1 */
       escolha = "Apto1, ";
   }
   /* Verifica se o CheckBox Apto 2 foi selecionada */
   if (apto2_ch.selected == true)
   {
       /* A opção foi selecionada */
       /* Armazena na variável escolha o valor Apto2 */
       escolha +=  "Apto2, ";
   }
   /* Verifica se o CheckBox apto 3 foi selecionada */
   if (apto3_ch.selected == true)
   {
       /* A opção foi selecionada */
       /* Armazena na variável escolha o valor Apto3 */
       escolha +=  "Apto3, ";
   }
   /* Verifica se o CheckBox apto 4 foi selecionada */
   if (apto4_ch.selected == true)
   {
       /* A opção foi selecionada */
       /* Armazena na variável escolha o valor Apto4 */
       escolha +=  "Apto4, ";
   }
   /* Verifica se o CheckBox apto 5 foi selecionada */
   if (apto5_ch.selected == true)
   {
       /* A opção foi selecionada */
       /* Armazena na variável escolha o valor Apto5 */
       escolha +=  "Apto5. ";
   }

   if (nome_txt.text == "" || cidade_txt.text == "" ||
   estado_txt.text == "" || tel_txt.text == "" ||
   email_txt.text == "" || checkin_txt.text == "" ||
   checkout_txt.text == "" || adultos_txt.text == "" ||
   criancas_txt.text == "" || comentarios_txt.text =="" || escolha == "")
   {
       msg_txt.text = "Prencha todos os campos!";
   }
   else
   {
       /*var mail_data:String = "Nome=" + nome_txt.text +
       "&Cidade=" + cidade_txt.text +
       "&Estado=" + estado_txt.text +
       "&Tel=" + tel_txt.text +
       "&Email=" + email_txt.text +
       "&Checkin=" + checkin_txt.text +
       "&Checkout=" + checkout_txt.text +
       "&Adultos=" + adultos_txt.text +
       "&Criancas=" + criancas_txt.text +
       "&Comentarios=" + comentarios_txt.text;*/

       url_vars.nome = nome_txt.text + "&";
       url_vars.cidade = cidade_txt.text + "&";
       url_vars.estado = estado_txt.text + "&";
       url_vars.tel = tel_txt.text + "&";
       url_vars.email = email_txt.text + "&";
       url_vars.checkin = checkin_txt.text + "&";
       url_vars.checkout = checkout_txt.text + "&";
       url_vars.adultos = adultos_txt.text + "&";
       url_vars.criancas = criancas_txt.text + "&";
       url_vars.comentarios = comentarios_txt.text + "&";
       url_vars.escolha = escolha + "&";

       msg_txt.text = "Enviando o formulario .....";

       //var url_vars:URLVariables = URLVariables(mail_data);
       url_request.data = url_vars;
       //url_vars.dataFormat = URLLoaderDataFormat.TEXT;
       url_loader.dataFormat = URLLoaderDataFormat.VARIABLES;
       url_loader.load(url_request);
       url_loader.addEventListener(Event.COMPLETE, _verifica);
   }
}

function _verifica(e:Event):void
{
   var loader:URLLoader = URLLoader(e.target);
   var email_status = new URLVariables(loader.data).success; //variavel que está no php

   if (email_status == "yes")
   {
       msg_txt.text = "Enviado com Sucesso!";
       timer = new Timer(500);
       timer.addEventListener(TimerEvent.TIMER, _timer);
       timer.start();
   }
   else
   {
       //para verificar se o timer funciona
       timer = new Timer(500);
       timer.addEventListener(TimerEvent.TIMER, _timer);
       timer.start();

       msg_txt.text = "Erro no envio, tente de novo!";
   }
}

function _timer(e:TimerEvent):void
{
   if (timer.currentCount >= 10)
   {
       nome_txt.text = cidade_txt.text = estado_txt.text =
       tel_txt.text = email_txt.text = checkin_txt.text =
       checkout_txt.text = adultos_txt.text = criancas_txt.text = 
       comentarios_txt.text = escolha = "";
       apto1_ch.selected = false;
       apto2_ch.selected = false;
       apto3_ch.selected = false;
       apto4_ch.selected = false;
       apto5_ch.selected = false;

       timer.removeEventListener(TimerEvent.TIMER, _timer);
   }
}

/* Função disparada quando se clica no botão limpar */
function _limpar(event:MouseEvent):void
{
   limpa();/* Chamamos a função limpa */
}
function limpa()
{
   escolha = "";
   nome_txt.text = "";
   cidade_txt.text = "";
   estado_txt.text = "";
   tel_txt.text = "";
   email_txt.text = "";
   checkin_txt.text = "";
   checkout_txt.text = "";
   adultos_txt.text = "";
   criancas_txt.text = "";
   comentarios_txt.text = "";
   escolha = "";
   apto1_ch.selected = false;
   apto2_ch.selected = false;
   apto3_ch.selected = false;
   apto4_ch.selected = false;
   apto5_ch.selected = false;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

muitos... muitos erros no script php. tente assim:

 

<?php
error_reporting(E_ALL);
$dados = array(
'nome',
'cidade',
'estado',
'tel',
'email',
'checkin',
'checkout',
'adultos',
'criancas',
'comentarios',
'escolha',
);
$mensagem = 'Seguem dados da mensagem:<br /><br />';
foreach( $dados as $campo ):
if ( !array_key_exists( $campo , $_POST ) ) continue;
$mensagem .= sprintf( '%s: %s<br />' , ucfirst( $_POST[ $campo ] ) , strip_tags( $_POST[ $campo ] ) );
endforeach;

//e-mail do remetente:
$mail_headers  = 'MIME-Version: 1.0' . "\r\n";
$mail_headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$mail_headers .= 'From: Teste sistema<contato@' . $_SERVER[ 'SERVER_NAME' ] . '>' . "\r\n";

$subject = 'E-mail do site';
$enviaPara = 'contato@meuemail.com.br';//você deve alterar isso para um email existente

// Vamos fazer um teste para ver se o email foi enviado corretamente
if( mail( $enviaPara, $subject, $mensagem, $mail_headers ) ) {
// Caso o email tenha sido enviado pelo provedor, retorna YES
//echo "&success=yes";
//$success=0';
$success='yes';
echo "&success=".$success;
} else {
// Caso não tenha sido enviado, retorna NO
//echo "&success=no";
//$success=1';
$success='no';
echo "&success=".$success;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela ajuda MAtheus, mas ta dando o mesmo erro

 

Não sei se essa info serve mas o meu mail onde deveria receber os contatos do formulario é Outlook Express com envio smpt

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok Matheus

 

testei no navegador e ta ok

 

testei no wamp aqui na maquina e ta dando "Erro no envio, tente de novo!"

 

testei agora no servidor pago e funcionou

 

aqui o resultado que esá vindo repetido, mas mesmo assim voce é um Grande :natalsmile: pois teu codigo ta funcionando e os outros que achei na net não deram nada até agora

 

Muitissimo obrigado pelo tempo em verificar meus dados ...agora vou tentar melhorar e estudar o codigo pois estã parado em "enviando o formulario..." sem dar o enviado com sucesso.

 

Seguem dados da mensagem:

 

Teste&: teste&

Teste&: teste&

Teste&: teste&

Teste&: teste&

Teste&: teste&

Teste&: teste&

Teste&: teste&

Teste&: teste&

Teste&: teste&

Teste&: teste&

Apto5. &: Apto5. &

 

 

valeu mesmo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi bem quais os problemas que restam, mas se no servidor dedicado está 100%, é muito provável que o erro esteja na configuração referente à envio de e-mails, na sua máquina local (php.ini, etc.).

:bye:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente vou ter que verificar o php.ini do wamp ...

 

os erros que eu tava falando são:

 

quando o usuario envia o contato tem uma area de informações referente ao envio.

 

No php seria a parte final

// Vamos fazer um teste para ver se o email foi enviado corretamente
if( mail( $enviaPara, $subject, $mensagem, $mail_headers ) ) {
// Caso o email tenha sido enviado pelo provedor, retorna YES
//echo "&success=yes";
//$success=0';
$success='yes';
echo "&success=".$success;
} else {
// Caso não tenha sido enviado, retorna NO
//echo "&success=no";
//$success=1';
$success='no';
echo "&success=".$success;
}

 

no AS3

na parte:

function _enviar

msg_txt.text = "Enviando o formulario ....."; // é o que está ficando atualmente na pagina do formulario quando envia.

 

na verdade para funcionar 100% deveria marcar conforme a função:

function _verifica

msg_txt.text = "Enviado com Sucesso!";

Compartilhar este post


Link para o post
Compartilhar em outros sites

A grande pergunta é: isso somente rodando local, ou em ambos os servidores?

Pelo que entendi, o problema é puro Action Script / Servidor local, e, portanto, não posso mais te ajudar... :natalsad:

 

Local não manda pois devo ter configurado mal o wamp e da "Erro no envio, tente de novo!"

 

no servido externo eu recebo mas o usuario fica com a pagina dando "Enviando o formulario ....."

 

dae eu estava me perguntando se a parte final do arquivo php estava correta.

 

if( mail( $enviaPara, $subject, $mensagem, $mail_headers ) ) {
       // Caso o email tenha sido enviado pelo provedor, retorna YES

$success='yes';
       echo "&success=".$success;
} else {
       // Caso não tenha sido enviado, retorna NO

       $success='no';
       echo "&success=".$success;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi como executar o .php no servidor mas executando o contato.html ou swf continua enviando a mensagem e ficando com a escrita "Enviandoi o formulario..."

 

 

tentei mudar o codigo assim mas não mudou nada

 

Vou verificar o codigo de novo e pensar o que ta faltando

 

if( mail( $enviaPara, $subject, $mensagem, $mail_headers ) ) {
       // Caso o email tenha sido enviado pelo provedor, retorna YES
       echo "&success=yes";
} else {
       // Caso não tenha sido enviado, retorna NO
       echo "&success=no";
}

Compartilhar este post


Link para o post
Compartilhar em outros sites
Não entendi como executar o .php no servidor

O ActionScript chama o arquivo testemail.php, que é o funcionamento do envio de e-mail que te ajudei a construir, certo?

Basta executar ele diretamente no navegador. Exemplo:

http://site.com.br/testemail.php

Teoricamente, ele deve retornar '&success=yes'.

Compartilhar este post


Link para o post
Compartilhar em outros sites

hehehe as vezes me perco em um copo de agua :natalbiggrin:

 

é e mesmo como voce falou ...ta dando isso mesmo &success=yes

 

 

deve ser algo no AS3 então

 

Mais uma coisa.....letra Ç por exemplo retorna ç&: ç&

 

e porque o retorno é sempre em dobro?

Compartilhar este post


Link para o post
Compartilhar em outros sites
é e mesmo como voce falou ...ta dando isso mesmo &success=yes

Levando isso em conta, se o e-mail estiver chegando também, o PHP está 100%, e o tópico resolvido. O resto é config de server ou seu action script.

:bye:

 

edit:

letra Ç por exemplo retorna ç&: ç&

isso é problema de codificação. Tenta alterar isso: "charset=iso-8859-1" por isso: "charset=UTF-8".

Você precisa equilibrar a codificação de toda a estrutura para que não hajam problemas com acentos. Se o problema persistir, faça uma pesquisa no fórum sobre isso. Garanto que há muito conteúdo sobre.

 

e porque o retorno é sempre em dobro?

já isso eu não entendi...

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

isso é problema de codificação. Tenta alterar isso: "charset=iso-8859-1" por isso: "charset=UTF-8".

Você precisa equilibrar a codificação de toda a estrutura para que não hajam problemas com acentos. Se o problema persistir, faça uma pesquisa no fórum sobre isso. Garanto que há muito conteúdo sobre.

Resolvido com charset=UTF-8 :natalohmy: :natalsmile:

 

REtorno em dobro na minha caixa de email tipo assim e sempre com & depois


ç&: ç&
ç&: ç&
ç&: ç&
ç&: ç&
ç&: ç&
ç&: ç&
ç&: ç&
ç&: ç&
ç&: ç&
ç&: ç&
Apto5. Apto5. &: Apto5. Apto5. &

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah, entendi...

Troque:

$mensagem .= sprintf( '%s: %s<br />' , ucfirst( $_POST[ $campo ] ) , strip_tags( $_POST[ $campo ] ) );

 

Por:

$mensagem .= sprintf( '%s: %s<br />' , ucfirst( $campo ) , strip_tags( $_POST[ $campo ] ) );

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

fico impressionado com a rapidez em resolver cada coisa MAtheus :natalsmile:

 

Agora ficou assim so com o caracter & a mais

Nome: test&
Cidade: test&
Estado: tesr&
Tel: test&
Email: test&
Checkin: test&
Checkout: test&
Adultos: test&
Criancas: test&
Comentarios: test&
Escolha: Apto4, &

Compartilhar este post


Link para o post
Compartilhar em outros sites

Humm... isso aí eu acho que é gerado pelo seu formulário Action Script.

Você pode fazer isso:

 

$mensagem .= sprintf( '%s: %s<br />' , ucfirst( $campo ) , strip_tags( rtrim( $_POST[ $campo ] , '&' ) ) );

 

Agora tá 100%.

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como diria uma minha amiga francesa ... "genial" :natalbiggrin:

 

Quando eu arrumo a parte final no AS3 atualizo o topico para ficar no historico.

 

Mais uma vez quero agradecer a disponibilidade do Matheus pois são pessoas como ele que fazem crescer o forum

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acabei de resolver com mais uma pesquizada no google :natalsmile:

 

Aqui o novo codigo onde so foram retiradas 2 & no final conforme podem ver.

 

Funcionando 100% agora.

 

Valeu mais uma vez Matheus !!

 

<?php
error_reporting(E_ALL);
$dados = array(
       'nome',
       'cidade',
       'estado',
       'tel',
       'email',
       'checkin',
       'checkout',
       'adultos',
       'criancas',
       'comentarios',
       'escolha',
);
$mensagem = 'Seguem dados da mensagem:<br /><br />';
foreach( $dados as $campo ):
       if ( !array_key_exists( $campo , $_POST ) ) continue;
	$mensagem .= sprintf( '%s: %s<br />' , ucfirst( $campo ) , strip_tags( rtrim( $_POST[ $campo ] , '&' ) ) );
      // $mensagem .= sprintf( '%s: %s<br />' , ucfirst( $campo ) , strip_tags( $_POST[ $campo ] ) );
endforeach;

//e-mail do remetente:
$mail_headers  = 'MIME-Version: 1.0' . "\r\n";
$mail_headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";
$mail_headers .= 'From: Contato do formulario do site<contato@' . $_SERVER[ 'SERVER_NAME' ] . '>' . "\r\n";

$subject = 'E-mail do site';
$enviaPara = 'contato@meuemail.com.br';//você deve alterar isso para um email existente

// Vamos fazer um teste para ver se o email foi enviado corretamente
if( mail( $enviaPara, $subject, $mensagem, $mail_headers ) ) {
       // Caso o email tenha sido enviado pelo provedor, retorna YES
       echo "success=yes";
       //$success=0';
     //  $success='yes';
       //echo "&success=".$success;
} else {
       // Caso não tenha sido enviado, retorna NO
       echo "success=no";
       //$success=1';
       //$success='no';
       //echo "&success=".$success;
}
?>

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.