Principalmente hay que tener en cuenta primero el envio de variables a un php y haces un navigateToURL al php para comprobar si se efectua la lectura por parte del php y eso se hace solo con un requesturl no hace falta un urlloader el codigo queda el siguiente:
Código :
var link:URLRequest = new URLRequest('http://localhost/SOL/var.php'); var variables1:URLVariables = new URLVariables(); var st01='stflash';//string de flash link.data = variables1; variables1.nnn = st01; //aki si haces un trace(link.data) en el output sale -->nnn='stflash' por lo tanto es //como si lo estuvieras poniendo bien para que lo reciba el php link.method=URLRequestMethod.POST;//aki envias nnn='stflash' a -->link //////////////////////////////////////y ahora a comprobar con navigateurl navigateToURL(link,"_blank");
en el php que mirare de que sea muy sencillo sera el siguiente (var.php)-->
Código :
<?php $aa = $_POST['nnn'];//aqui recibo nnn='stflash' de parte el swf cuando //se ejecuto -->link.method=URLRequestMethod.POST; $ab=$aa . ".stphp";//transformacion de variable del php echo 'ab=' . $ab;//salida de la variable transformada que se hara visible por la //linea del swf navigateToURL(link,"_blank"); ?>
hasta aki se envian datos desde el as3 y se reciben los datos se transforman desde el php y se comprueba desde as3 como quedo el php
//la salida desde el firefox a mi me da -->ab=stflash.stphp
bien ahora vamos ha recoger los datos transformados, antes de nada tener en cuenta que tienes que trabajar desde servidor y por lo tanto desde firefox porque aveces y lo tengo comprobado no siempre es lo mismo lo que aparece desde el player con lo que aparece desde el firefox por decir un explorador el problema es que no tenemos un output en la que podamos ir haciendo trace por lo que creamos una caja de texto dinamico para comprobar las posibles salidas de texto recojidas por las variables ahora para recoger datos de un php utilizamos el urlloader aqui quedaria un codigo
Código :
var tf1:TextFormat=new TextFormat(); var td1:TextField=new TextField(); td1.defaultTextFormat=tf1; td1.type=TextFieldType.DYNAMIC;td1.border=true; addChild (td1);////esto es para comprobar que es lo que recibo del php y como lo lee el flash var link:URLRequest = new URLRequest('http://localhost/SOL/var.php'); var variables1:URLVariables = new URLVariables(); var recoger:URLLoader = new URLLoader(); var st01='stflash'; link.data = variables1; variables1.nnn = st01; link.method=URLRequestMethod.POST;///aki envio los datos al php recoger.dataFormat = URLLoaderDataFormat.VARIABLES;//aki especifica como se van a recoger //esos datos, aki tube un poco de lio porque segun como //dejes el echo del php te lo leera o no recoger.addEventListener(Event.COMPLETE, f01);//cuando el load se complete entonces //haz f01 recoger.load(link); ///////////////////comienza ha hacer el load(la lectura de datos del php function f01(e1:Event){ //////////////esta funcion se efectua una vez se haya acabado la carga de datos navigateToURL(link,"_blank"); //comprobacion de como queda el echo desde firefox var recoger:URLLoader = URLLoader(e1.target);//ojo tiene que ser el mismo evento //que la funcion es decir e1 y aki recoge //el echo del php (e1.target) y lo pone dentro //de recoger td1.text=(recoger.data); //envio el echo del php--> que se puso en el URLLOADER recoger //en la caja de texto td1.text stop();//le pongo un stop por que he visto que se ejecuta continuamente el swf //ya que me pone todo el rato transfiriendo datos en la parte inferior del firefox }
Este codigo para que vayamos sobreseguro lo publicamos (en html y swf) y se ejecuta desde el servidor no desde la unidad es decir hay que ejecutar el html desde (http://localhost/SOL/16ac.html)
Bien ahora los experimentos que es lo que me gusta a mi, aki hay que tener en cuenta dos lineas
(el echo del php) y (recoger.dataFormat = URLLoaderDataFormat.VARIABLES; del flash)
si en archivo php hay:
Código :
echo 'ab='.$ab;
y en el fla hay:
Código :
recoger.dataFormat = URLLoaderDataFormat.VARIABLES; td1.text=(recoger.data);
el resultado en la caja de texto es --> ab=stflash%2Estphp
%2E es el equivalente al codigo ascii de --> .
si en archivo php hay:
Código :
echo 'ab='.$ab;
y en el fla hay:
Código :
recoger.dataFormat = URLLoaderDataFormat.BINARY; td1.text=(recoger.data);
el resultado en la caja de texto es --> ab=stflash.stphp
si en archivo php hay:
Código :
echo 'ab='.$ab;
y en el fla hay:
Código :
recoger.dataFormat = URLLoaderDataFormat.TEXT; td1.text=(recoger.data);
el resultado en la caja de texto es --> ab=stflash.stphp
VARIABLES no me sale demasiado bien con todas las pruebas que hice asi que lo que voy ha hacer es emular lo que hace VARIABLES e identificar todas las variables que puede llegar ha haber y asociarlas a su respuesta mediante un array multidimensional --> supongamos que cada variable con su valor se separa de un string con & y de cada uno de esos identificamos la variable como lo que esta a la izquierda del igual y lo que esta a la derecha es su valor asi que haremos
Código :
var st02:String=recoger.data; var a1:Array=new Array(); a1=st.split('&'); var a2:Array=new Array(); for (var n=0;n<=((a1.length)-1);n++){ a2[n]=a1[n].split('='); }
el array a2 contendra cada variable en a2[x][0] y sus correspondientes valores en a2[x][1]
bueno apartir de aqui que cada uno desenvolupe su codigo, espero que os haya gustado, gracias por leerme y sobretodo si alguien quiere mejorar el codigo con propuestas enviad sin problema ya que estoy aki para compartir codigo y aprender