Tengo una pagina en As3, con un formulario de contacto que sera procesado en Php.La cosa es que tengo la pagina en un alojamiento sin php, y el archivo send php en otro.Creo se hace con esto de croos domain.xml, pero no funciona.Os pongo los codigos.
En el primer fotograma de la pagina pongo este trozo de codigo:
Código :
Security.loadPolicyFile("http://www.midominio.es/crossdomain.xml")En codigo del formulario:
Código :
contact_name.text = contact_email.text = contact_subject.text =
contact_message.text = message_status.text = "";
send_button.addEventListener(MouseEvent.CLICK, submit);
reset_button.addEventListener(MouseEvent.CLICK, reset);
var timer:Timer;
var var_load:URLLoader = new URLLoader;
var URL_request:URLRequest = new URLRequest( "http://www.midominio.es/carpeta/send_email.php" );
URL_request.method = URLRequestMethod.POST;
function submit(e:MouseEvent):void
{
if( contact_name.text == "" || contact_email.text == "" ||
contact_subject.text == "" || contact_message.text == "" )
{
message_status.text = "Por favor rellene todos los campos.";
}
else if( !validate_email(contact_email.text) )
{
message_status.text = "Por favor introduzca una dirección de e-mail válida";
}
else
{
message_status.text = "enviando...";
var email_data:String = "nombre=" + contact_name.text
+ "&email=" + contact_email.text
+ "&asunto=" + contact_subject.text
+ "&mensaje=" + contact_message.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 reset(e:MouseEvent):void
{
contact_name.text = contact_email.text = contact_subject.text =
contact_message.text = message_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" )
{
message_status.text = "Su mensaje se ha enviado correctamente.";
timer = new Timer(500);
timer.addEventListener(TimerEvent.TIMER, on_timer);
timer.start();
}
else
{
message_status.text = "Error,su mensaje no ha podido ser enviado.";
}
}
function on_timer(te:TimerEvent):void
{
if( timer.currentCount >= 10 )
{
contact_name.text = contact_email.text = contact_subject.text =
contact_message.text = message_status.text = "";
timer.removeEventListener(TimerEvent.TIMER, on_timer);
}
}y este es el archivo crossdomain.xml, que lo he puesto en la raiz de alojamiento donde esta el send.php, es decir en http://www.midominio.es/crossdomain.xml
Código :
?xml version="1.0"?> <cross-domain-policy> <allow-access-from domain="*"/> </cross-domain-policy
No se si están mal ubicados los arhivos o los codigos.
Gracias por anticipado.
