Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Amigos,
Em alguns sites nosso estava funcionando tudo normal, porém depois que mudamos de provedor, os formulários de fale conosco pararam de funcionar.
É apenas alguns campos no flash que chama um arquivo php para enviar o contato, porém faz tudo direito, mas os campos vem em branco, assim:
Nome:
Cidade:
RG:
E na frente de cada item desse deveria estar o conteúdo do campo que o visitante preencheu.
E isso tudo começou depois de trocar de provedor.
O QUE PODE SER?
Já fiz isso.
Refiz o form no flash e também o arquivp PHP mas mesmo assim não funciona, vai em branco os dados. É como se fosse as variaveis indo em branco para o php.
Como os dados estão sendo enviados ?
Posta aqui o código AS do momento do envio, e também o código do PHP para eu analisar.
Sempre tive problemas com isso, 80% dos casos era problema no servidor .
Vamos ver
No Flash, tem um botão que está mandando assim:
on (release) {
if (nomecompleto eq "" or cidade eq "" or rg eq "" or ssl eq "") {
stop();
} else {
loadVariablesNum("form.php", 0, "POST");
gotoAndStop(2);
}
}
Esses nomes de campos estão devidamente colocados no VAR de cada campo.
Já o PHP está assim:
<?
$to = "email@email.com.br";
$email .= "email@email.com.br";
$msg .= "Nome: $nomecompleto\n\n";
$msg .= "Cidade: $cidade\n\n";
$msg .= "RG: $rg\n\n";
$assunto .= "ASSUNTO: TESTE";
mail($to, $assunto, $msg, "From: $email\n");
?>Vamos lá.....
Primeiramente , verifiquei que seu código está em AS1, é meio antiguinho, vou utilizar um AS2 ( menos antigo ) para você aqui em baixo:
Vou te ensinar da maneira que eu acho correta !
1)Criar um objeto para guardar as Vars:
var objMail:LoadVars = new LoadVars();
2)Guardar as variáveis dos campos no objeto, ao clique do botão;
3)Passar os dados do objeto para o PHP via Variáveis
4)Seu código do botão, em AS2, ficando assim:
on (release) {
//condições e operadores lógicos agora da forma correta:
if (nomecompleto == "" || cidade == "" || rg == "" || ssl == "") {
//crie um campo de texto instanciado "status" para exibir o erro ao visitante
status.text = "Preencha os Campos";
stop();
} else {
//informa que está enviando
status.text = "Enviando...";
//passa os campos para o php
objMail.nomecompleto = nomecompleto;
objMail.cidade = cidade;
objMail.rg = rg;
objMail.ssl = ssl;
//envia para o php
objMail.sendAndLoad("form.php",objMail,"POST");
}
}
Agora, no flash, você precisa verificar se as informações foram enviadas corretamente, para isso, coloque o código abaixo no FRAME de seu arquivo FLA ( não no botão de envio ).
objMail.onLoad = function() {
//verifica se foi enviado:
if (this.ver) {
// em caso de sucesso
status.text = 'Mensagem enviada com sucesso!.';
} else {
//else
saida.text = "Erro, desculpem-nos !";
}
};
No flash está OK, agora eu verifiquei que você não está pegando os valores do arquivo PHP ! Não tem como aparecer nada mesmo pois não acontece a "troca" de informações entre o SWF e o PHP
Para que isso aconteça, e retorne um valor verdadeiro ou falso, caso envie, ou não, faça da seguinte forma:
<?
//pega as vars enviadas do flash:
$nomecompleto = $_POST['nomecompleto'];
$cidade = $_POST['cidade'];
$rg = $_POST['rg'];
$ssl = $_POST['ssl'];
//monta seu mail
$to = "email@email.com.br";
$email .= "email@email.com.br";
$msg .= "Nome: $nomecompleto\n\n";
$msg .= "Cidade: $cidade\n\n";
$msg .= "RG: $rg\n\n";
$assunto .= "ASSUNTO: TESTE";
//variavel para retornar verdadeiro ou falso
$ver = mail($to, $assunto, $msg, "From: $email\n");
//retorna pro flash
echo "ver=".$ver;
?>
Deve funcionar !!!!!!!
abraços
Cara, não to conseguindo...será que tem como você modificar em cima desse código que postei?? Sei que estou fazendo alguma coisa errada, mas não sei o que é pela falta de conhecimento no assunto. Desde já agradeço!!
É uma m***** isso já aconteceu comigo, tb, tipo funcionava perfeitamente o forumulario, copiei do mesmo modo pra nao perder tempo e no outro lugar nao funcionou de jeito nenhum. Tenta apagar esses campos que não estao funcionando e criar de novo.
Abs