Ir para conteúdo

POWERED BY:

Arquivado

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

Elektra

[Resolvido] acentuação em form de email Flash AS3 + PHP, charset

Recommended Posts

Uso Vista Ultimate em português, Flash e Dreamweaver CS4 em inglês.

Por default o DW usa a codificação utf-8. Uso o form em Flash com components TextInput e TextArea.

Segundo orientação de um instrutor de Action e PHP, inseri no action a linha: "System.useCodePage = true;" e no PHP: "header('Content-Type: text/html; charset=iso-8859-1');".

Já tentei todas as alternativas possíveis com utf-8, também já tentei usar utf8-decode e iso-8859-1.

Também já tentei substituir os components por caixas de texto dinâmico (devidamente instanciados) e Embedar para Latin (3 opções).

Até o momento nada deu resultado.

Continuo recebendo a mensagem desconfigurada (misturada com carateres estranhos) em meu email.

Já entrei em contato com o suporte do meu servidor.

Se alguém já enfrentou tal situação e puder dar uma luz agradeço sinceramente.

PS: não entendo nada de PHP, minha praia é o Flash.

Obrigada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uso Vista Ultimate em português, Flash e Dreamweaver CS4 em inglês.

Por default o DW usa a codificação utf-8. Uso o form em Flash com components TextInput e TextArea.

Segundo orientação de um instrutor de Action e PHP, inseri no action a linha: "System.useCodePage = true;" e no PHP: "header('Content-Type: text/html; charset=iso-8859-1');".

veja bem.. não tem algo de errado aí?

 

aparentemente fez tudo certo, mas no PHP, por quê definiu header como "iso-8859-1" sendo que todo os restante está em utf-8 ?

 

defina o php como utf-8 também

e verifique o html se está com metatag charset utf-8

 

e por fim, veja qual o mb_internal_encoding() do php

 

<?php
echo mb_internal_encoding();
?>

se estiver usando banco de dados, certifique-se também de estar com definição utf-8

 

 

movido

Linux http://forum.imasters.com.br/public/style_emoticons/default/seta.gif PHP

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro hinom, obrigada pela sua atenção.

Baixei o template Action + PHP de um site gringo (flashmo.com), a única referência de codificação estava no html (iso-8859-1), nada no PHP ou Action. Como gerei uma nova index. html assumiu a codificação utf_8 (default no DW CS4).

Fizemos testes online, mantendo utf-8 no html, mas inserindo no Action: System.useCodePage = true; - está na documentação da Adobe, e no PHP: header ('Conten-Type: text/html; charset=iso-8859-1'); .

Não lembrei de comentar que meu servidor usa LINUX(Apache).

Já fiz todas as tentativas possíveis com o utf-8 (Html e PHP), com action, sem action, e nada. Também já tentei outras opções com iso 8859-1 e utf8_decode. O fórum de action me sugeriu alterar os componentes por caixas de texto dinâmico e embedar (Latin - 3 opções), já testei e nada.

Devido a dificuldade (e muitos amigos tentanto auxiliar), já entrei em contato com o suporte técnico do meu servidor para tentar descobrir qual a codificação que devo usar, estou aguardando os testes.

 

Eis o PHP que estou usando (desculpe se ainda não sei inserir o código no post de maneira adequada).

 

<?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";
	$client_ip = $_SERVER['REMOTE_ADDR'];
	$email_body = "Name: $contato_nome \nEmail: $sender \n\nSubject: $contato_assunto\n\nMessage: \n\n$contato_mensagem \n\nIP: $client_ip \n\nFlash Contact Form provided by [url="http://www.meudominio.com.br";"]http://www.meudominio.com.br";[/url]		
	$extra = "From: $sender\r\n" . "Reply-To: $sender \r\n" . "X-Mailer: PHP/" . phpversion();

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

O código que você mencionou é inédito para mim até o momento.

Se não for abusar, peço por favor, me orientar onde devo inserir.

Não estou usando banco de dados, é apenas um formulário de email para meu portfolio.

Um abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se a página acima é acessada pelo flash, sugiro armazenar mb_internal_encoding() em uma variável.

 

Obs. O ideal para trabalhar com Flash e uma linguagem dinâmica é reproduzir o formulário HTML e realizar os testes. O formulário HTML funcionando 100% com o código PHP, já ajuda bastante.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eis a resposta que recebi do suporte:

 

"não há uma codificação correta para seu formulário de e-mail. A sra. decide qual codificação deseja utilizar no site e após isso deverá manter a mesma em todas as aplicações.

 

No XYZMail, por padrão, é utilizado a codificação ISO-8859-1, então se deseja que as mensagens sejam visualizadas corretamente deve utilizar ISO-8859-1."

 

Isso eu já tinha testado (mas testei de novo para anotar o resultado), não funfa.

Agradeço sinceramente se puder me dar um toque de como usar o código que você sugeriu.

 

O formulário que estou usando é o melhor que encontrei até o momento (o ActionScript 3.0 é excelente).

Fora isso, só me resta testar em um servidor Windows.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Informe no final do código acima:

echo "codificacao=" . mb_internal_encoding();

 

Dentro do Flash você recupera codificacao, e manda escrever utilizando o comando TRACE.

 

Poste o resultado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro hargon, fiz uma formação em webdesign, mas não me ensinaram ao menos a anexar o PHP a um formulário de email, estou me virando sozinha.

Tampouco sei usar o PHP em Html. É o meu primeiro contato com esta linguagem.

Também não domino, por enquanto, o ActionScript; mas para isso já tenho um curso programado para breve.

Se puder me dar um toque como usar o código que você mencionou no Action, será uma ajuda valiosa.

 

Segue o Action que estou usando:

(sem a linha System.useCodePage = true;):

 

 

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

dadas as condições, sugiro que antes de aplicar no flash,. a título de teste somente, faça um formulário simples em html e enviar o html

 

se funcinoar tudo certo, faça no flash.

 

isso é apenas pra ter certeza de que está tudo funcionanndo adequadamente no server.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não sabe nem ao menos criar um formulário em HTML?

 

Sobre a AS acima, faça assim:

 

function receive_response(e:Event):void
{
var loader:URLLoader = URLLoader(e.target);
var email_status = new URLVariables(loader.data).success;

var codificacao = new URLVariables(loader.data).codificacao;
trace(codificacao);

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

Conforme foi citado, se houver retorno nenhum é melhor você fazer o teste com HTML primeiro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigada pela ajuda e peço sinceramente desculpas pela minha inexperiência. É a primeira vez que publico algo.

Sim, eu sei criar um formulário em Html, o que eu não aprendi foi como usar o PHP ou qualquer outra linguagem de servidor.

Vou testar as sugestões recebidas, no Flash e Html, e documentar os resultados.

Volto para dar um retorno. Caso eu ainda encontre dificuldade, ficarei sempre imensamente grata pela dedicação recebida, mas não vou abusar mais.

Minha alternativa digna será contratar um programador que entenda de Action e PHP, ou até mesmo migrar para um servidor Windows (não vou desistir de ter no meu portfolio um formulário de email que funcione).

Até breve.

Um grande abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se quiser alcançar o resultado é continuar postando aqui que tentaremos lhe ajudar.

 

Sobre criar um formulário HTML, é só você criar o formulário normalmente, informando o nome dos campos corretamente. E na tag form você informa em action o a pagina.php e em method informa post.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beijo no seu coração hargon!

Não encontrei palavras melhores para tanta gentileza.

 

 

Não dá para chamar de site, reuni alguns exercícios simples e adicionei links, está sem preloaders.

Apenas para aprender a publicar e testar o formulário de email .

Espero em breve expor um layout decente e páginas com conteúdo.

www.elzapereira.com.br

Compartilhar este post


Link para o post
Compartilhar em outros sites

Testei aqui e pareceu funcionar. Existe algum erro ainda?

 

Obs. O comando trace retorna a mensagem apenas na OUTPUT do Flash.

 

Se ainda estiver com erro, faça o teste com um formulário HTML, pois se o código em PHP estiver ok, iremo mover o tópico para a área de Flash, onde outras pessoas poderam lhe ajudar também.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro hargon, nada até o momento.

Parece que a dificuldade está com o email do meu servidor, pelo menos em relação ao Flash.

Só não tive tempo hoje de testar o form em Html, mas vou providenciar o mais breve possível. Também vou testar com outros endereços de email (Gmail, Yahoo, Hotmail). Dou retorno em breve.

Conforme as sugestões, em algumas situações houve falha para enviar a mensagem, que nunca tinha ocorrido antes; na maioria das vezes, não é exibido o assunto na caixa de entrada. Os caratereres permanecem desconfigurados, dificultando a leitura da mensagem.

Nada registrado em Output.

Não tenho intenção de retornar ao fórum de Action, foi o primeiro onde adicionei posts, não foi além de usar utf-8, dispensar os componentes e embedar caixas de texto dinâmico.

Obrigada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vim agradecer aos amigos hinom e hargon pela disposição em me auxiliar e informar que finalmente consegui, com a ajuda do moderador berseck (AS3), resolver sobre a codificação do form de email.

No actionscript estava tudo ok, foi necessário inserir 2 linhas a mais no PHP.

Eu já tinha pesquisado muito, além de toda ajuda, aqui e em outros locais, foi algo inédito.

Embora a informação do suporte do meu server para usar iso, funcionou com utf_8.

Conforme os códigos em AS3 e PHP, a solução pode ser diferente.

Em respeito e consideração aos critérios do autor, sugiro a outros membros do fórum, em situação semelhante ou para ampliar conhecimentos, visitar os artigos publicados, fica também a sugestão para conhecer o blog do colega berseck, que é excelente.

[TUTORIAL] form de email fácil em AS3 + PHP: Clique aqui

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.