Comunidad de diseño web y desarrollo en internet online

as3+php

Citar            
MensajeEscrito el 20 Abr 2009 03:18 pm
Hola de nuevo, esta vez ando por aquí con una duda que me surge a partir de uno de vuestros tutoriales. Estoy tratando de hacer un sistema de log in. Vosotros habéis hecho uno en AS2 y luego hicisteis un reciclado para cambiar las conexiones a AS3. Por mi parte, estoy partiendo directamente de AS3, sin flex ni nada, solo AS3 pelo, he tratado de seguir vuestros pasos y los de otros tutoriales en red q encontré (videoaprende), pero no hay manera de hacer que mi flash conecte con el fichero php. El código es el siguiente

Código :

import flash.net.*;
var php:String = "login.php";
var req:URLRequest = new URLRequest(php);
var vars:URLVariables = new URLVariables();
var loader:URLLoader = new URLLoader();
req.method = URLRequestMethod.POST;
function alClick(e:MouseEvent):void
{
   vars.user = txtUsuario.text;
   vars.pass = txtPassword.text;
   req.data = vars;
   loader.load(req);
}
enviar_btn.addEventListener(MouseEvent.CLICK,alClick)


utilizo un loader en lugar de un sendto, para poder lanzar luego un evento, cuando el primer php se haya ejecutado, pero con el SendTo tal y como haceis en vuestro tutorial tampoco me funciona. Mi fichero php funciona correctamente si lo llamo dsd una página html normal e incluso he hecho que me hiciese un insert nada más llamarlo, para ver si el flash realmente contactaba con el fichero php o no, pero no llega a ocurrir nada. Parece como si el flash no encontrase el fichero php o algo, pero no muestra error ninguno. He probado tambien a cambiar el formato de url del archivo php por "/login.php"; con el mismo nulo resultado.

¿Se os ocurre algo? llevo ya más de una semana parado en esta tontería y empieza a ser extremadamente frustrante XDD

Gracias de antemano y un saludo

Por xeyos

10 de clabLevel



 

chrome
Citar            
MensajeEscrito el 20 Abr 2009 04:06 pm
Prueba poniendo la ruta absoluta al PHP (usa localhost si tienes un servidor local)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 20 Abr 2009 05:02 pm
efectivamente, con la URL completa funciona (al fin un rayo de luz xD)... pero debería funcionar con rutas relativas, por no mencionar que es lo técnicamente más correcto. ¿alguna pista al respecto?

Muchas gracias Jorge, de una forma u otra con esto ya puedo salir al paso, no se me había ocurrido ^_^

Por xeyos

10 de clabLevel



 

chrome
Citar            
MensajeEscrito el 20 Abr 2009 05:21 pm
Si publicas desde dentro de Flash o previsualizas desde el sistema de archivos, deberás usar URL absoluta, para que funcione una ruta relativa, lo tienes que previsualizar via http

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 20 Abr 2009 07:00 pm
puff.. allá va una semana de trabajo tirada a la basura... estaba publicando desde flash y ejecutando directamente el archivo html pregenerado....
En fin, no se si sentirme mejor por que funciona o peor por el tiempo perdido xDDD

Mil gracias ;)

Por xeyos

10 de clabLevel



 

chrome
Citar            
MensajeEscrito el 08 May 2009 05:39 pm
Hmm siguiendo con este trabajillo, me he topado con un nuevo fallo inexplicable para mi. Al hacer lo que me indicasteis, conseguí poner a funcionar tanto el código de envío de datos a php, como otro de retorno, pero, al tratar de hacer lo mismo dentro de un movie clip, usando el siguiente código:

Código :

import flash.net.*;

   var php:String = "info.php";
   var req:URLRequest = new URLRequest(php);
   var loader:URLLoader = new URLLoader();
   loader.dataFormat = URLLoaderDataFormat.VARIABLES;
   loader.load(req);
   loader.addEventListener(Event.COMPLETE, alCompletarInfo);
   
   function alCompletarInfo (e:Event):void
   {
      var ciudad = trim(unescape(""+ e.target.data["ciuda"]));
      lblCabeceraInfo.text = ciudad;
   }
      

function trim(str:String):String {
    return str.replace(/^\s*(.*?)\s*$/g, "$1");
}
stop();


en el archivo php, devuelvo la variable simplemente con un echo "ciuda=".$ciud;
HE comprobado que sustituyendo el echo por un insert a la DB, la inserción se ejecuta correctamente, pero si intento mostrar el dato en flash a traves de recoger el echo, siempre me devuelve "Undefined".

Partiendo de que el código está basado en el que estoy utilizando al principio de mi flash... ¿puedo asumir que el fallo pueda estar siendo producido por estar dntro del movie clip? no encuentro ninguna explicación razonable :S

Por xeyos

10 de clabLevel



 

chrome
Citar            
MensajeEscrito el 08 May 2009 05:48 pm
Agregas un listener al Loader, da igual que estés dentro de un MovieClip on en root

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 09 May 2009 11:05 am
he encontrado el error y lo he solventado.. parece increible y no se por que ocurre, pero al recibir el dato, flash estaba añadiendo dos espacios en blanco delante del nombre de la variable. Si imprimia el loader.data al completo, me devolvía lo siguiente: 20%20%ciuda=Rakuen
Obviamente al ocurrir esto, no podía acceder a la variable loader.data.ciuda ya que tecnicamente era %20%20ciuda y no existía de otra forma. Para solucionarlo usé el siguiente código (y funcionó milagrosamente XD)

Código :

var variables:URLVariables = new URLVariables( trim(unescape(loader.data) ));
var ciudad = variables.ciuda;
lblCabeceraInfo.text =""+ciudad;


Probado directamente desde php, el echo no me devolvía ningún espacio, por lo que no se pq se producía este fallo, pero quedó resuelto :P. Como siempre, muchas gracias por la ayuda ^_^

Por xeyos

10 de clabLevel



 

chrome

 

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