Ir para conteúdo

POWERED BY:

Arquivado

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

Elektra

[Resolvido] Formulário de Contato - AS3 + PHP - desconfigura acen

Recommended Posts

Baixei um template para formulário de contato, funciona perfeitamente, mas desconfigura acentuação.

Já adicionei no Action: System.useCodePage = true;

e no PHP: header('Content-Type: text/html; charset=iso-8859-1');

Também já tentei --> apenas no PHP: $contato_mensagem = utf8_decode($_POST['mensagem']) ;

Não entendo nada de PHP, a primeira opção foi de um instrutor, a segunda pesquisei no Google.

Testei online, mas até o momento não obtive resultado.

Agredeço quem puder auxiliar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom isso ai não tem nada a ver com flash!

 

E sim com php...

Pra começar se você ta fazendo tudo em UTF-8 deve-se manter em utf-8

Se não quebra a acentuação mesmo...

 

Outra coisa

Quando você ta colocando so acentos no flash no formulário os acentos estão lá na caixinha de formulário...

 

Se sim... procure ajuda no php

 

Pois nada tem a ver com o flash sua duvida!

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro amigo, baixei o template de um site gringo (www.flashmo.com.)

Não havia nada no PHP referente a utf_8, ISO, etc.

No IE 7 ou 8, ao digitar no form, a acentuação fica perfeita, ao receber em meu email é exibido desconfigurado.

No Firefox 3, Opera, Safari ou Chrome, ao digitar os acentos são deslocados, e exibidos igualmente desconfigurados no email.

A linha inserida no Action está na documentação da Adobe. O instrutor que mencionei tem conhecimento tanto de Action quanto de PHP, mas não conseguiu matar a charada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Selecine as caixas de texto do formulario

 

Abra a abinha de propriedades, selecione então a opção embed, e escolha as opções de LATIN todas elas

 

E pronto você terá um campo de texto que lê a formatação Latina

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Embedar um Component: TextInput (nome, email, assunto) e um Componente: TextArea (mensagem) ????

O que é possível embedar é a caixa de texto dinâmico onde são exibidas as notificações de alerta (campos em branco, sucesso ou falha no envio), mas isso não é enviado para meu email.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já entrei em contato com o suporte técnico do meu servidor - que usa Linux e Apache - eu uso Vista Ultimate em português e Flash e DW CS4 em inglês, preciso confirmar se isso interfere de alguma forma no PHP.

Ando pesquisando muito sobre o assunto, as informações são desconexas. Já nem sei informar todas as alternativas que testei.

Não custa tentar mais esta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro berseck!

Testei os campos com texto dinâmico e Embed (Latin - 3 opções), mantive no html e php utf-8.

Não incluí no action o System.useCodePage = true;

Não é possível nem ao menos digitar ao rodar o swf.

Instanciei corretamente, testei antes de embedar.

Fui rever o template gringo, no html usa charset = iso-8859-1, nada no AS ou PHP referente a codificação. Os campos são com texto dinâmico. Rodei o swf para testar, a digitação das palavras com acentos é normal.

Esqueci de alguma coisa?

Dessa forma não tive disposição de testar no servidor.

As informações do fórum de PHP, até o momento, não deu para considerar.

Formulário de email ainda sem solução.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro berseck!

Testei os campos com texto dinâmico e Embed (Latin - 3 opções), mantive no html e php utf-8.

Não incluí no action o System.useCodePage = true;

Não é possível nem ao menos digitar ao rodar o swf.

Instanciei corretamente, testei antes de embedar.

Fui rever o template gringo, no html usa charset = iso-8859-1, nada no AS ou PHP referente a codificação. Os campos são com texto dinâmico. Rodei o swf para testar, a digitação das palavras com acentos é normal.

Esqueci de alguma coisa?

Dessa forma não tive disposição de testar no servidor.

As informações do fórum de PHP, até o momento, não deu para considerar.

Formulário de email ainda sem solução.

 

 

 

Bom, velho , faço da seguinte maneira, nos inputs texts não embedo nada, mesmo porque isso ai não precisa, pelo menos no meu exemplo ele vai normal com acentos.

 

Confirma se esta correto o método de envio como ex: requestURL.method=URLRequestMethod.POST;

Já aconteceu muito comigo, de eu fazer isso codificar do jeito certo e no PHP codificar novamente ai desconfigura tudo, de uma olhada se não esta fazendo isso também.

 

Coloque uma fonte padrao do sistema nos formularios. Tipo Arial, times etc..

 

No php meu exemplo está assim SEM HTML:

 

$nome = $_POST['nome'];
$email = $_POST['email'];
$assunto = $_POST['assunto'];
$mensagem = $_POST['mensagem'];

//$sender é a variavel que armazena o email do cliente.
$sender = $email;

//$receiver é a variavel que recebe o valor do email a ser enviado, no caso o meu.
$receiver = "thalesviolakis@gmail.com";

//$clienteIP é a variavel responsável por pegar o IP do cliente que preencheu o formulário, por questões de segurança essa informação será gravada na caixa postal.
$clienteIP = $_SERVER['REMOTE_ADDR'];

//$mensagemEmail é a mensagem que vai aparecer na caixa postal.
$mensagemEmail = "Nome: $nome\nEmail: $sender \nAssunto: $assunto \nMensagem: $mensagem \n\nIP: $clienteIP";

 

Os acentos vão normais exemplo: áéíóúçÇ

 

 

se você tiver usando HTML, eu tenho um exemplo de quando programava em as2 que usa HTML, ve se te ajuda.

 

$corpo = '<html><head><title>'.utf8_decode($_POST['assunto_txt']).'</title></head><body>';
$corpo .= 'Nome: '.utf8_decode($_POST['nome_txt']).'<br/>Email: '.utf8_decode($_POST['email_txt']).'<br/>';
$corpo .= 'Assunto: '.utf8_decode($_POST['assunto_txt']).'<br/>Mensagem: '.utf8_decode($_POST['mensagem_txt']).'</body></html>';

//Cabeçalho para exibição do email de quem enviou
$headers = "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: ".utf8_decode($_POST['nome_txt'])."<".utf8_decode($_POST['email_txt']).">\r\nContent-type: text/html";

//Envio do email com os dados recebidos do flash
mail($para, utf8_decode($_POST['assunto_txt']), $corpo, $headers);

 

 

Espero que isso te ajude!

abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro thales, obrigada pela atenção.

Eis o PHP que estou usando:

 

<?php
$contato_nome = $_POST['name'];
$contato_email = $_POST['email'];
$contato_assunto = $_POST['subject'];
$contato_mensagem = $_POST['message'];

if( $contato_nome == true )
{
	$sender = $contato_email;
	$receiver = "contato@meudominio.com.br";
	
	$email_body = "Name: $contato_nome \nEmail: $sender \n\nSubject: $contato_assunto\n\nMessage: \n\n$contato_mensagem";		
	$extra = "From: $sender\r\n" . "Reply-To: $sender \r\n" . "X-Mailer: PHP/" . phpversion();

	if( mail( $receiver, "Flash Contact Form - $contact_subject", $email_body, $extra ) ) 
	{
		echo "success=yes";
	}
	else
	{
		echo "success=no";
	}
}
?>

A questão é que o email do meu servidor só aceita iso-8859-1.

Removi do PHP a linha que anotava o IP do usuário.

No Flash estou usando fonte Verdana, apenas para nomear os componentes (TextInput e TextArea) e exibir a mensagem de status em uma caixa de texto dinâmico.

 

O form de email está funcionando, só não é possível ler corretamente o conteúdo das mensagens. Os amigos do fórum de PHP deram várias sugestões, nada funcionou até o momento.

 

Aqui o ActionScript 3.0:

 

contato_nome.text = contato_email.text = contato_assunto.text = 
contato_mensagem.text = mensagem_status.text = "";

enviar_btn.addEventListener(MouseEvent.CLICK, envia);
limpar_btn.addEventListener(MouseEvent.CLICK, limpa);

var timer:Timer;
var var_load:URLLoader = new URLLoader;
var URL_request:URLRequest = new URLRequest( "send_email.php" );
URL_request.method = URLRequestMethod.POST;

function envia(e:MouseEvent):void
{
	if( contato_nome.text == "" || contato_email.text == "" ||
		contato_assunto.text == "" || contato_mensagem.text == "" )
	{
		mensagem_status.text = "Por favor preencha todos os campos de texto.";
	}
	else if( !validate_email(contato_email.text) )
	{
		mensagem_status.text = "Por favor informe um endereço de email válido.";
	}
	else
	{
		mensagem_status.text = "enviando...";
		
		var email_data:String = "name=" + contato_nome.text
					   + "&email=" + contato_email.text
					   + "&subject=" + contato_assunto.text
					   + "&message=" + contato_mensagem.text;
					   
		var URL_vars:URLVariables = new URLVariables(email_data);
		URL_vars.dataFormat = URLLoaderDataFormat.TEXT;
		
		URL_request.data = URL_vars;
		var_load.load( URL_request );
		var_load.addEventListener(Event.COMPLETE, receive_response );
	}
}

function limpa(e:MouseEvent):void
{
	contato_nome.text = contato_email.text = contato_assunto.text = 
	contato_mensagem.text = mensagem_status.text = "";
}

function validate_email(s:String):Boolean 
{
	var p:RegExp = /(\w|[_.\-])+@((\w|-)+\.)+\w{2,4}+/;
	var r:Object = p.exec(s);
	if( r == null ) 
	{
		return false;
	}
	return true;
}

function receive_response(e:Event):void
{
	var loader:URLLoader = URLLoader(e.target);
    var email_status = new URLVariables(loader.data).success;
	
	if( email_status == "yes" )
	{
		mensagem_status.text = "Sua mensagem foi enviada com sucesso.";
		timer = new Timer(500);
		timer.addEventListener(TimerEvent.TIMER, on_timer);
		timer.start();
	}
	else
	{
		mensagem_status.text = "Falha. Sua mensagem não foi enviada.";
	}
}

function on_timer(te:TimerEvent):void 
{
	if( timer.currentCount >= 10 )
	{
		contato_nome.text = contato_email.text = contato_assunto.text = 
		contato_mensagem.text = mensagem_status.text = "";
		timer.removeEventListener(TimerEvent.TIMER, on_timer);
	}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, pelo que eu observei no seu código, você não colocou esta linha

 

/Cabeçalho para exibição do email de quem enviou

$headers = "Content-type: text/html; charset=iso-8859-1\r\n";

 

que seria um complemento da sua variavel $extra.

 

Será que por causa desse detalhe os caracteres não estão sendo enviados corretamente?

tente colocar semelhante ao que fiz e posta ae, quando não coloco essa linha também da erro no acento...

 

$headers = "Content-type: text/html; charset=iso-8859-1\r\n";

$headers .= "From: ".utf8_decode($_POST['nome_txt'])."<".utf8_decode($_POST['email_txt']).">\r\nContent-type: text/html";

 

acho que seria isso..

 

tente colocar esta linha e ve se eh isso

abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro amigo, thalesviolakis.

Publiquei acima o PHP sem nenhuma codificação, idem ao que baixei (template).

Observe o 1º post:

"Já adicionei no Action: System.useCodePage = true;

e no PHP: header('Content-Type: text/html; charset=iso-8859-1');"

Também já testei alterando a página em Html de utf_8 (default no DW) para iso-8859-1. Testei muitas "combinações" no servidor.

 

Restou uma dúvida: você adicionou o iso-8859-1 e na linha abaixo o utf8_decode.

É isso que você me sugere?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Elektra,

 

A um tempo atrás eu criei o seguinte tutorial:

http://forum.imasters.com.br/index.php?/topic/332293-tutorial-formulario-de-email-facil-em-as3-php/

 

Ele funciona com todas as acentuações e informações.

 

Ta certo que eu não coloquei um layout bacana nele :P... mas que ele funciona eu tenho certeza rs

 

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro berseck.

Li atentamente o link com sua pergunta mais as respostas recebidas, você está aprendendo PHP, conforme mencionou.

Ao final você menciona recursos que já testei até cansar (para o PHP: iso 8859-1 e no Action: System.useCodePage=true;

Isso foi sugerido de início pelo instrutor de PHP e Action que tentou me auxiliar, e repito, não funcionou.

Você não mencionou qual a codificação aceita pelo email do seu servidor.

O meu só aceita iso-8859-1.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você, reparar eu não chamo nenhuma vez na Action o System.useCodePage = true.

 

Pois em 90% dos casos ele não é necessário, o meu sistema de envio de e-mails aceita UTF-8 e ISO... mas eu colocando o sistema de charset no MIME como texto da mensagem faz com que sua mensagem vá em ISO como você quer e não UTF-8

 

Se você testou o exemplo do cara e funcionou perfeitamente no do gringo em seu computador... logo é alguma coisa que está faltando você completar para que seu código também funcione...

 

Pois se existe 1 que funciona... outros também devem funcionar.

 

O sistema de recebimento de meus e-mail é o gmail... meu e-mail pessoal no qual o servidor é linux e é um endereço maluco que funciona tanto com uma codificação como a outra...

 

E sinto lhe informar, mas por regras técnicas, não existe servidor que só leia ISO 8859-1, pois querendo ou não ao instalar o apache você instala todas as DLL's do mesmo, em seu servidor... ou qualquer outro sistema de servidor... tbm instala as informações php, que contem 10 tipos diferentes de ISO, alguns tipos de UTF-8

 

Ou seja não seria o charSet de envio do seu e-mail que está errado e sim algo que está errado em sua codificação.

 

 

Se você quiser tentar coloque um utf8_decode ou use um iconv

Para usar o iconv usa-se assim:

<?php
 $myUnicodeString = "Åäö";
 echo iconv("UTF-8", "ISO-8859-1", $myUnicodeString);
 ?>

Eu também reparei que você não usa o MIME no seu php... deveria dar uma olhada de como se usa ele... é muito util e ajuda muito a resolver esse tipo de problema.

 

 

Eu realmente recomendo que você teste o código do tutorial que lhe passei... só como teste, sem mais nada em seu servidor apenas colocando seu e-mail para qual vai enviar... como teste.

 

 

Para ver se funciona ou não... se funcionar significa que seu servidor ta aceitando todas as codificações acima mencionadas já anteriormente e que seu código php está faltando tais informações de codificação.

 

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como mencionei desde o 1º post, não entendo nada de PHP.

Sobre o email do meu servidor aceitar apenas iso-8859-1 foi informação do suporte técnico, não é porque que eu quero. Usa Linux com Apache 1.3.41 (Unix).

Gero o PHP no Dreamweaver CS4. Tenho instalado no PC o WampServer, mas isso é para quando eu aprender a programar em PHP, confesso que não sei fazer uso.

Quanto ao MIME, já observei em outros códigos que baixei, mas isso nem mesmo o pessoal do fórum de PHP mencionou.

Não cheguei a testar a sugestão do Thales, ela se refere a AS2 e utf8-decode no Html, eu uso AS3.

Se você observar, muitas vezes testei sem o System.useCodePage=true; - embora esta linha seja sugerida pelo site da Adobe (dica do instrutor de AS e PHP), e muitos outros sites que pesquisei (até na reposta que você deu a outro usuário).

O que eu ainda não testei foi com outros endereços de email, como o Gmail (Terra, Yahoo, Hotmail), nestes eu desconheço a codificação aceita.

Vamos ver no que vai dar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apenas um detalhe, após observar a publicidade do fórum, meu site em Flash está publicado no Dial Host.

Só aceita no email do servidor, iso-8859-1! O suporte fez testes (???), será que fez? em Html?, dificilmente em Flash AS 3.0, e informei os códigos que estava usando.

 

Quanto a usar o iconv

<?php $myUnicodeString = "Åäö"; echo iconv("UTF-8", "ISO-8859-1", $myUnicodeString); ?>

 

...não faço nem idéia para o que serve.

Depois de tantas dicas "furadas", só testo aquilo que encontro "comprovação" em outros sites.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Venho agradecer a dedicação do berseck para resolver a acentuação do form de email, e dar este tópico por resolvido.

Como observo o critério na forma de auxiliar a cada usuário do fórum, me abstenho em publicar a solução, pois não é minha autoria.

Recomendo a outros interessados no assunto visitar as matérias publicadas, em especial, sobre o form em AS3 + PHP. Conforme o código, requer uma solução diferente.

Para saber mais: Clique aqui

O colega também administra um blog que vale a pena conhecer, excelente.

Muito obrigada por tudo.

Um grande abraço.

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.