Comunidad de diseño web y desarrollo en internet online

Problemas con crossdomain.xml

Citar            
MensajeEscrito el 11 Dic 2012 03:40 pm
Buenas, este es mi primer posteo en el foro, llevo mucho tiempo leyendo pero nunca posteé nada. Saludos!

Antes que nada aclaro que lei documentación de todo tipo, probé distintas configuraciones que encontré en este foro y en otros sitios y nada me funciona.

Algunos datos, trabajo con PHP / MySQL, Flash Professional CS5.5 y el proyecto fué hecho en AS2.

Es una aplicación que trabaja sobre Facebook, y lo más raro es que funcionaba perfectamente y luego dejó de hacerlo.

Lo que pasa es que no puedo comunicar Flash con PHP, lo que vi es que esto sucede a partir de que se carga el archivo "crossdomain.xml", es decir:

- Carga el swf principal, consulto datos de Facebook, los retorno al FLA --> todo OK
- Comienzo el proceso de inscripción, descarga un swf y carga otro con la sbases y condiciones --> todo OK
- Acepto las Bases del punto anterior, se descarga el swf y se carga otro --> acá se llama al "crossdomain.xml" y a partir de aca se bloquean todas las conexiones de datos entre el swf y PHP

Mi crossdomain actualmente tiene esto:

Código HTML :

<?xml version="1.0"?>

<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
   <allow-access-from domain="*" />
</cross-domain-policy>


Sinceramente no entiendo cual es el error, todo el procesamiento de datos es dentro del mismo servidor. ¿Tendrá algo que ver en este punto Facebook?

Cualquier data que puedan facilitarme es bienvenida...

Desde ya muchas gracias!

Por cemansilla

4 de clabLevel



 

chrome
Citar            
MensajeEscrito el 11 Dic 2012 07:11 pm
Acepto las Bases del punto anterior, se descarga el swf y se carga otro --> acá se llama al "crossdomain.xml" y a partir de aca se bloquean todas las conexiones de datos entre el swf y PHP


Dices que se descarga un swf y se llama a otro ... ¿ambos estan en el mismo dominio? ¿El PHP tambien está en el mismo dominio?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 11 Dic 2012 07:17 pm
Si está todo en el mismo dominio y 1 día antes estaba todo funcionando correctamente.

Por cemansilla

4 de clabLevel



 

chrome
Citar            
MensajeEscrito el 11 Dic 2012 07:36 pm
¿Te da error de crossdomain? ¿O simplemente no recibes los datos? ¿Estas sniffando la conexión para ver si realmente no es llamado el PHP?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 11 Dic 2012 07:41 pm
EL crossdomain lo carga bien, probé dejándolo como ahora, en el raiz. Probé poniendolo en la carpeta donde tengo la app, en ambos lados, etc.

No tengo mucha experiencia en desarrollo en Flash por lo que no conozco todas las herramientas o técnicas que tengo para hacer un debug y encontrar donde está el problema.

Veo las peticiones en la consola del Chrome y se realizan correctamente. Lo único que me llama la atención es que nunca tuve datos de respuesta (en la solapa response), pero esto sucedía incluso cuando la app funcionaba normalmente.

Por cemansilla

4 de clabLevel



 

chrome
Citar            
MensajeEscrito el 11 Dic 2012 07:44 pm
Mmm ... si no obtienes respuesta no obtienes datos, el PHP te tiene que pasar datos, sea pares de nombre/valor, JSON, XML o lo que sea que hayas definido como formato
Un programa que uso bastante con Flash es http://www.charlesproxy.com

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 11 Dic 2012 07:59 pm
Tuve un pequeño avance. Tenía algunos llamados a un PHP con ruta absoluta (cabe aclarar que la ruta era correcta). Armé las URLs relativas, ahora no se carga el crossdomain.xml pero sigo sin hacer procesamientos de los datos que envio desde el Flash al PHP. Dejo 2 porciones de código:

Código ActionScript :

// validaciones del formulario
function validaciones() {
   bloquearPantalla();
   
   btn_ingresar.enabled = false;
   if(_global.debug){
      _parent.gotoAndPlay(16);
   }

   var todo_ok:Boolean = true;

   if(trim(txt_nombre_equipo.value) == ""){
      todo_ok = false;
   }
   if(trim(txt_telefono.value) == ""){
      todo_ok = false;
   }
   if(trim(txt_comuna.value) == ""){
      todo_ok = false;
   }
   if(trim(txt_nombre_capitan.value) == ""){
      todo_ok = false;
   }
   if(trim(txt_ci_rut.value) == ""){
      todo_ok = false;
   }
   
   if(!todo_ok){ // algun fallo   
      mostrarError();
      btn_ingresar.enabled = true;
      desbloquearPantalla();
   }else if(!rutValido(trim(txt_ci_rut.value))){ // rut incorrecto
      mostrarError();
      btn_ingresar.enabled = true;
      desbloquearPantalla();
   }else{ // todo ok   
      //bloquearPantalla();
      // preparo peticion
      var enviar:LoadVars = new LoadVars();
      var recibir:LoadVars = new LoadVars();
         
      // lo que se ejecuta al finalizar
      recibir.onLoad = function() {
         // declaro una variable global que contiene el id del equipo
         _global.id_equipo = this.id_equipo;
         /*
         _global.nombre_equipo = this.nombre_equipo;
         _global.nombre_capitan = this.nombre_capitan;
         */
         // todo ok, siguiente paso
         _parent.gotoAndPlay(16);
      }
      
      // variables a enviar
      enviar.nombre_equipo = trim(txt_nombre_equipo.value);
      enviar.telefono = trim(txt_telefono.value);
      enviar.comuna = trim(txt_comuna.value);
      enviar.nombre_capitan = trim(txt_nombre_capitan.value);
      enviar.ci_rut = trim(txt_ci_rut.value);
      enviar.region = trim(txt_region.text);
      
      _global.nombre_equipo = trim(txt_nombre_equipo.value);
      _global.nombre_capitan = trim(txt_nombre_capitan.value);

      // realizo la peticion
      enviar.sendAndLoad(_global.base_url+"_ajax/paso_2", recibir, "post");   
   }
}


Y este es el PHP que procesa los datos:

Código PHP :

// paso 2, crea el equipo
    function paso_2(){
        // data del equipo
        $fbuid = $this->data['fbuid'];
        $nombre_equipo = $_POST['nombre_equipo'];
        $region = $_POST['region']; 
        $id_equipo = $this->system_model->crear_equipo($fbuid, $nombre_equipo, $region);       

        // data del capitan
        $telefono = $_POST['telefono'];
        $comuna = $_POST['comuna'];
        $nombre_capitan = $_POST['nombre_capitan'];
        $ci_rut = $_POST['ci_rut'];
        $region = $_POST['region'];        
        $this->system_model->actualizarDataUsuarioCreacionEquipo($fbuid, $telefono, $comuna, $nombre_capitan, $ci_rut, $region);

        echo "&id_equipo=".$id_equipo;
        echo "&nombre_capitan=".$nombre_capitan;
        echo "&nombre_equipo=".$nombre_equipo;
    }

Por cemansilla

4 de clabLevel



 

chrome
Citar            
MensajeEscrito el 11 Dic 2012 08:04 pm
Tip: atiende un error a la vez. Usando rutas absolutas puedes probar desde dentro de Flash, donde el problema del crossdomain no interfiere para nada. Si el crossdomain es el problema, publicando desde Flash tiene que andar, si no anda entonces puede que el PHP no devuelva nada o devuelva errores, por eso es importante que puedas sniffar la salida

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 11 Dic 2012 08:11 pm
Voy a investigar que datos puedo sacar con el Charles, la verdad es que estuve todo el día con esto y ya estoy bastante "quemado".

Voy a seguir haciendo pruebas con los tips que me pasaste sino mañana vendré con más dudas.

Muchisimas gracias!

Por cemansilla

4 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.