Comunidad de diseño web y desarrollo en internet online

Recivir XML desde un PHP ¿Por que no funciona?

Citar            
MensajeEscrito el 21 Feb 2009 04:29 pm
Hola, como muchos saben (Si me siguen en twitter) había estado trabajando en una simple aplicación de Twitter.
Mi aplicación simplemente llamada un XML que era el que contenía la timeline de twits y la mostraba.

Primero pensé en llamar el XML directamente desde As3.



Para llamar ese XML se necesitaba una autentificación. Por ello intentaba agregar al pedido un header con:

Código ActionScript :

 var header:URLRequestHeader = new URLRequestHeader("Authorization", "user:clave");
urlrequest.push(header);

pero, descubrí que no podía enviar un "Authorization:" de As3.


Luego se me ocurrió llamar el XML desde PHP y luego llamar ese PHP desde As3 para que me diera el XML.



Simplemente el php si podía enviar el header que yo necesitaba. Hize varias pruebas y el PHP podia imprimir el XML correctamente en pantalla. El problema ocurrió cuando llamaba el PHP desde As3, pues As3 no tomaba la variable.
El php era algo así simplificándolo:

Código PHP :

$resultado= TraemeElXMLporfavor("direccion.xml");
echo "elxml=".$resultado;

Si yo veía este PHP directamente desde el explorador me imprimía en pantalla correctamente

Código :

elxml=<xml><todoelcontenido></todoelcontendido></xml>

Pero al llamarlo desde As3, era como si nada.
Luego para ver si era problema de mi As3, cambie el PHP de manera que no llamara un XML si que que puse directamente.

Código :

$resultado=" HOLA, vengo desde el PHP";

recibió el mensaje... Entonces, me di por vencido y supuse que simplemente As3 no podía tomar una variable tan larga y compleja desde un php.

Luego decidí que PHP creara una copia del XML llamado en mi servidor, y luego As3 llamara la copia del XML.



Ahora todo fue un éxito, el php creaba un XML en mi servidor y luego As3 lo podía llamar con tranquilidad.
Pero, en mi total felicidad me comencé a dar cuenta del peligro que era esto. Una vez que publique mi aplicación mi servidor se comenzó a llenar de XML de la gente que ocupaba el programa, y luego empezaron a aparecer XML con nombre raros, y estos XML no se podían borrar y si intentaba descargarmelos creaban carpetas en mi sistema.
En fin, me estaban intentando atacar e inyectar código a través de esta "vulnerabilidad". Por ello deseche este modo también. ¿Ayuda? Por favor...

Ojala alguien sepa como tomar el XML directamente desde el PHP, o mejor si desde la web.

Por JaLeRu

Claber

1913 de clabLevel

7 tutoriales

Genero:Masculino  

Existo

firefox
Citar            
MensajeEscrito el 21 Feb 2009 10:43 pm
no se si lo has intentado llamar al archivo xml de esta forma

Código :

var miXML:XML = new XML();
var mi_Loader:URLLoader = new URLLoader(new URLRequest("http://lawebdelxml.com/mi.xml"););
mi_Loader.addEventListener(Event.COMPLETE, xmlLoaded);
function xmlLoaded(event:Event):void {
   miXML = XML(mi_Loader.data);
}

por lo general me suele dejar sin mas

Por Lynxcraft

33 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Feb 2009 12:08 am

Lynxcraft escribió:

no se si lo has intentado llamar al archivo xml de esta forma

Código :

var miXML:XML = new XML();
var mi_Loader:URLLoader = new URLLoader(new URLRequest("http://lawebdelxml.com/mi.xml"););
mi_Loader.addEventListener(Event.COMPLETE, xmlLoaded);
function xmlLoaded(event:Event):void {
   miXML = XML(mi_Loader.data);
}

por lo general me suele dejar sin mas


Necesito una autentificacion... Es obligatorio.

Por JaLeRu

Claber

1913 de clabLevel

7 tutoriales

Genero:Masculino  

Existo

firefox
Citar            
MensajeEscrito el 22 Feb 2009 03:35 pm

JaLeRu escribió:


Código PHP :

$resultado= TraemeElXMLporfavor("direccion.xml");
echo "elxml=".$resultado;

Si yo veía este PHP directamente desde el explorador me imprimía en pantalla correctamente

Código :

elxml=<xml><todoelcontenido></todoelcontendido></xml>



¿Por qué agregas "elxml="?

Lo que te debería devolver el PHP es un XML válido.

Código PHP :

<?

// aquí llegarían los datos de autentificación si lo haces con el código de as3 de más abajo.
$usuario = $_REQUEST['username'];
$passwd = $_REQUEST['password'];


$resultado=TraemeElXMLporfavor('direccion.xml'); // se supone que esta función devuelve un XML válido (<padre><hijos>...</hijos></padre>)

print $resultado;

?>


luego desde AS3 envías una petición simple al PHP, incluyendo identificación si así lo deseas (podrías autenticar en el PHP).

Código ActionScript :

var xmlLoader:URLLoader = new URLLoader();
var xmlRequest:URLRequest = new URLRequest('http://midominio.com/devuelveElXML.php');

// opcional si deseas autenticar con php
var xmlRequestVars:URLVariables = new URLVariables();
xmlRequestVars['username'] = "miusuario";
xmlRequestVars['password'] = "mipassword";
xmlRequest.data(xmlRequestVars);
xmlRequest.method = URLRequestMethod.POST;

xmlLoader.load(xmlRequest);
xmlLoader.addEventListener(Event.COMPLETE, xmlCallBack);

function xmlCallBack(e:Event):void {
  var datos:XML = new XML(e.target.data);
  // aquí ya tienes los datos del XML en la variable datos.
  // ya puedes acceder a los nodos con los métodos de la clase XML.
}


Saludos, espero que resuelvas tu problema.

Por w00p

24 de clabLevel



 

safari
Citar            
MensajeEscrito el 22 Feb 2009 03:45 pm
Agrego el "elxml=" por que si no me equivoco para luego recibirlo solo necesito colocar
loader.data.elxml para que me devuelva eso.. Veré como me funciona con tu forma... imprimiendo directamente el XML, aunque no se si funcione.

Por JaLeRu

Claber

1913 de clabLevel

7 tutoriales

Genero:Masculino  

Existo

firefox
Citar            
MensajeEscrito el 23 Feb 2009 01:21 pm
Ok. Nos cuentas cómo te fue.

Un saludo.

Por w00p

24 de clabLevel



 

safari

 

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