Ir para conteúdo

POWERED BY:

Arquivado

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

Elektra

[Resolvido] Adicionar ". restrict ('%','&&#39

Recommended Posts

Oi João.

O que você propões no AS já existe, embora com outros nomes.

Sua

var variables:URLVariables = new URLVariables(); //Esse kara vai fazer o trabalho de enviar o & e o %

é a minha

var URL_vars:URLVariables = new URLVariables(email_data);

Mas ficou confuso definir o que você sugere aqui:


		var email_data:String = "name=" + contato_nome.text
					   + "&email=" + contato_email.text
					   + "&subject=" + contato_assunto.text
					   + "&message=" + contato_mensagem.text;
					   

Outro detalhe, seu PHP não traz nenhuma referência quanto ao charset.

Não vou retornar ao velho problema, já resolvido, da acentuação.

 

Quanto a testar em html, está fora de questão.

 

Obrigada pela disposição em auxiliar, mas o action sempre funcionou muito bem.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas ficou confuso definir o que você sugere aqui:


		var email_data:String = "name=" + contato_nome.text
		 + "&email=" + contato_email.text
		 + "&subject=" + contato_assunto.text
		 + "&message=" + contato_mensagem.text;
		 

Elektra, é como eu disse no post anterior, imagine que alguém coloque no seu campo contato_nome o seguinte: Teste&Cia

 

Quando você fizer a concatenação desse campo, ficará assim:

 

email_data:String = "name=Teste&Cia&email=emaildousuario@dominio.com";

Perceba que você já tem um problema ai...

 

Outro detalhe, seu PHP não traz nenhuma referência quanto ao charset.

Não vou retornar ao velho problema, já resolvido, da acentuação.

 

Um problema de cada vez, Elektra,

 

Como eu disse no post #18: 'Vamos resolver isso'

 

Obrigada pela disposição em auxiliar, mas o action sempre funcionou muito bem.

 

Não passe para o construtor da URLVariables aquela email_data daquela forma, se você continuar fazendo isso, continuará tendo problemas sempre; O problema não está no PHP e sim no action.

 

Faça como eu lhe disse e em vez de concatenar essa email_data, passe os valores como propriedade da URLVariables, isso vai resolver seu problema:

 

variables.name 	= contato_nome.text;
variables.email 	= contato_email.text;
variables.subject 	= contato_assunto.text;
variables.message 	= contato_mensagem.text;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro amigo, nada ainda.

Meu form agora nem envia.

Penso que editei corretamente, adicionei no action as linhas que você sugeriu e observei o endereço correto para "enviar.php".

Mantive o código original nas barras de comentários, para que observe se houve algum descuido de minha parte.

Nenhum erro no compilador.

 

AS3 atual:

 

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 loader:URLLoader = new URLLoader; //joao --> URLLoader(); (removi parenteses)
//var var_load:URLLoader = new URLLoader;

var request:URLRequest = new URLRequest('enviar.php' ); //joao 
//var URL_request:URLRequest = new URLRequest( "send_email.php" );

var variables:URLVariables = new URLVariables();  

//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...";
		
		variables. name =  contato_nome.text; //joao//
		variables. email = contato_email.text;  //joao//
		variables. subject = contato_assunto.text; //joao//
		variables. message =   contato_mensagem.text; //joao//
		
		
		/*
		var email_data:String = "name=" + contato_nome.text
					   + "&email=" + contato_email.text
					   + "&subject=" + contato_assunto.text
					   + "&message=" + contato_mensagem.text;
					   */
					   
		 
		//URL_vars.dataFormat = URLLoaderDataFormat.TEXT;
		
		request.data = variables; //joao
		//URL_request.data = URL_vars;
		
		request.method = URLRequestMethod.POST; //joao
		
		loader.load(request); //joao
		//var_load.load( URL_request );
		
		loader.addEventListener(Event.COMPLETE, receive_response); //joao
		//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 = "";
}


// e aqui como fica?
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);
	}
}

Quanto ao PHP editei de acordo com o nome de instância dos componente que uso no form.

Fiquei em dúvida quanto a esta linha: em $name, $sender, etc.

Só não editei para $contato_nome, etc, por conta do $sender.

 

$body = sprintf( "Nome: %s\nEmail: %s\nAssunto: %s\n\nMensagem: \n\n%s" , $name , $sender , $subject , $message );  

PHP atual:

<?php
if ( isset( $_POST[ 'name' ] ) && isset( $_POST[ 'email' ] ) && isset( $_POST[ 'subject' ] ) && isset( $_POST[ 'message' ] ) ){ 

$contato_nome =& $_POST[ 'name' ];  
$contato_email =& $_POST[ 'email' ]; 
$contato_assunto =& $_POST[ 'subject' ]; 
$contato_mensagem =& $_POST[ 'message' ]; 

$sender =& $email;  
$receiver = "contato@meudominio.com.br";   

$body = sprintf( "Nome: %s\nEmail: %s\nAssunto: %s\n\nMensagem: \n\n%s" , $name , $sender , $subject , $message );      
$header = sprintf( 'From: %s\r\nReply-To: %s\r\nX-Mailer: PHP/%s\r\n' , $sender , $sender , phpversion() );

echo sprintf( 'success=%s' , mail( $receiver , sprintf( 'Contato - %s' , $contato_assunto ) , $body , $header ) ? 'yes' : 'no' );
} else echo 'success=no';
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, já deu pra perceber que a parada não é tão simples quanto parece.

 

Vou começar a testar outros forms em PHP e tentar adaptar o AS3 para ter recursos semelhantes ao que uso atualmente, como o timer, a limpeza total dos campos e mensagens de alerta.

 

Quanto a codificação já sei o que é aceito pelo meu server.

 

Tenho observado e testado forms de contato em outros sites em Flash, nenhum deles travou ao usar o caracter "&".

 

Agradeço a disposição dos colegas em tentar auxiliar, mas peço por favor dar este tópico por [encerrado].

 

Se necessário, eu peço a colaboração para outro código em PHP.

 

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Novidades, entrei 2010 com o pé direito.

 

Com a ajuda de um amigo aqui do fórum (off post), afinal tenho o meu form de email funcionando perfeitamente.

Sempre gostei muito da forma de funcionamento, mas realmente estava disposta a testar outras opções.

Desistir, ... nunca.

 

O PHP que eu uso estava perfeito, realmente foi necessário o ajuste nas váriáveis do Action Script.

 

Como em ambos os casos (AS3 e PHP) o trabalho não foi meu, me reservo em publicá-los por consideração aos desenvolvedores que me auxiliaram.

 

Enviei para o server ontem a tarde, estou muito feliz.

Foram meses arrastando correntes.

 

Agradeço muito a atenção dos amigos, e peço, por favor, dar este tópico por [RESOLVIDO]

 

Abraços a todos. http://forum.imasters.com.br/public/style_emoticons/default/natal_biggrin.gif

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.