Foros del Web » Creando para Internet » Flash y Actionscript »

Error al enviar datos de Flash AS3 a PHP

Estas en el tema de Error al enviar datos de Flash AS3 a PHP en el foro de Flash y Actionscript en Foros del Web. Hola, he estado intentando crear un código sencillo (como prueba para un proyecto mas grande) para enviar una variable de flash (AS3) a PHP, y ...
  #1 (permalink)  
Antiguo 18/06/2011, 17:14
 
Fecha de Ingreso: junio-2011
Mensajes: 3
Antigüedad: 12 años, 10 meses
Puntos: 0
Error al enviar datos de Flash AS3 a PHP

Hola, he estado intentando crear un código sencillo (como prueba para un proyecto mas grande) para enviar una variable de flash (AS3) a PHP, y que este me regrese un mensaje dependiendo de si se enviaron datos o una cadena vacía.

Código AS3:
Código:
function abrir(e:Event):void
{
	import flash.display.Sprite;
	import flash.net.URLRequest;
	import flash.net.URLVariables;
	import flash.net.sendToURL;

	var enviar:URLRequest = new URLRequest("http://localhost/prueba/variablesphp.php");
	var recibir:URLLoader = new URLLoader();

	var variables:URLVariables = new URLVariables();
	variables.texto = caja.text;

	enviar.method = URLRequestMethod.POST;
	enviar.data = variables;

	recibir.dataFormat = URLLoaderDataFormat.VARIABLES;

	recibir.addEventListener(Event.COMPLETE,Respuesta);
	recibir.addEventListener(IOErrorEvent.IO_ERROR,HayError);

	recibir.load(enviar);

	function Respuesta(event:Event)
	{
		trace(recibir.data.aflash);
	}
}
boton.addEventListener(MouseEvent.CLICK, abrir);
Código PHP:
<?php
    $var 
$_POST['texto'];
    
//$var = $_POST['texto'];
    
    
if(isset($var)){
        
$mensaje "se ha recibido el mensaje";
    }else{
        
$mensaje "no se ha recibido mensaje";
    }
    
    
$vardeenvio "&aflash=$mensaje&";
    
//returnString = http_build_query($mensaje,'&');
    
echo utf8_encode($vardeenvio);
?>
Al clicar el boton (llamado boton) aparece el siguiente error en las salidas de Flash:
Código:
Error: Error #2101: La cadena transmitida a URLVariables.decode() debe ser una cadena de consulta con formato URL codificado y pares nombre/valor.
	at Error$/throwError()
	at flash.net::URLVariables/decode()
	at flash.net::URLVariables()
	at flash.net::URLLoader/onComplete()
Si elimino las lineas de funcion y de click del boton (para que se ejecute nada mas cargar la película), me aparece en los errores de compilador el siguiente mensaje:
"Escena 1 1046: No se encontró el tipo o no es una constante en tiempo de compilación: enviar."

Me gustaría saber que estoy haciendo mal, les agradezco su ayuda, he buscado en decenas (literalmente) de foros y post de forosdelweb y no doy con la solución.
  #2 (permalink)  
Antiguo 18/06/2011, 20:28
Avatar de jatg  
Fecha de Ingreso: abril-2011
Ubicación: caracas
Mensajes: 152
Antigüedad: 13 años
Puntos: 15
Respuesta: Error al enviar datos de Flash AS3 a PHP

hola rony te explico con detalles como hacerlo presta atencion aqui vamos


Como con cualquier aplicación de cliente, con el tiempo usted querrá comunicarse con un servidor, por ejemplo, para mostrar resultados y tal.Esto es algo que Flash ha sido capaz de hacer bastantes versiones atrás, pero algunos de ustedes no saben lo que es el equivalente a AS3.Así que aquí vamos.

En AS3 se utiliza la clase URLVariables para almacenar nuestras variables objeto de este modo:

primera instancia de la myVariables var con el URLVariables clase.

myVariables var: URLVariables = new URLVariables ();
Entonces se crea y define las propiedades dentro de la myVariables ejemplo (estos son los nombres que llamaremos en PHP para acceder a los datos).

myVariables.myName = "Bill"; myVariables.beans = "los frijoles son increíbles!";
Ahora tenemos que crear una instancia del URLRequest clase con el fin de enviar a nuestras variables.

var myURLRequest: URLRequest = new URLRequest ("http://www.mywebsite.com/phpvarstutorial.php");
Ahora, por la magia que hace que todo funcione ...

myURLRequest.data = myVariables; navigateToURL (myURLRequest, '_blank');
Básicamente lo que estamos haciendo es unir nuestros URLVariables a nuestro URLRequest como los datos que se transmiten a lo largo de la dirección URL de destino.Y luego usar el navigateToURL función para enviar todo (y también abrir la página).

A continuación, puede utilizar $ _GET ['var']; en PHP para recuperar las variables
__________________
www.josealexis.net
  #3 (permalink)  
Antiguo 20/06/2011, 06:45
 
Fecha de Ingreso: junio-2011
Mensajes: 3
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Error al enviar datos de Flash AS3 a PHP

Gracias por tu interés en mi problema, modifiqué mi código para acomodarlo a la estructura que me propones, con una diferencia: tu variable MyURLRequest para mi se llama enviar. Sin embargo sigo obteniendo el error 1046 en la pestaña Errores de Compilador de flash cs5.

Además en tu caso llevas la variables con el método GET, y debido a que mi proyecto más grande requiere envío de contraseñas me gustaría usar POST, puedo seguir usando esta línea?

Código:
enviar.method = URLRequestMethod.POST;
  #4 (permalink)  
Antiguo 04/01/2012, 13:07
 
Fecha de Ingreso: abril-2007
Mensajes: 15
Antigüedad: 17 años
Puntos: 0
Respuesta: Error al enviar datos de Flash AS3 a PHP

Tal vez es un poco tarde para contestar, pero ojala te sirva.

Observe en tu código no tienes un trace en el envio. Tienes los 3 componentes basicos: URLVariable, URLRequest y URLLoader.

Comparto un codigo que adapte un poco, y otro tanto lo tome de un tutorial, pero al fin funciona.

FLASH AS3

function sendData():void{

var envio:URLVariables = new URLVariables();
envio.nombre = nombre_txt.text;
envio.apellidos = apellidos_txt.text;
envio.mail = mail_txt.text;
envio.producto = producto_cmb.selectedItem;
if(buscadores_rdo.selected){
envio.encontrar = buscadores_rdo.value;
} else if(publicidad_rdo.selected){
envio.encontrar = publicidad_rdo.value;
} else if(otros_rdo.selected){
envio.encontrar = otros_txt.text;
}
envio.masinfo = info_chk.selected;

var urlPHP:URLRequest = new URLRequest("http://localhost/flash/form/recibe.php");
urlPHP.method = URLRequestMethod.POST;
urlPHP.data = envio;

var enviar:URLLoader = new URLLoader();
enviar.addEventListener(Event.COMPLETE, enviado);
enviar.addEventListener(IOErrorEvent.IO_ERROR, errorNoEnvio);
enviar.load (urlPHP);
trace(envio);
}
function enviado(event:Event):void {

salida_txt.text = "Sun información se envio correctamente";
}

function errorNoEnvio(event:IOErrorEvent):void {
salida_txt.text = "Error al enviar su información";
}


PHP

<?php
echo "Mi primer form en flash";

if(!empty($_POST['nombre'])){escribelog($_POST['nombre']);}
else{escribelog("Viene vacio ". print_r($_POST));}

function escribelog($strLog){
$b = "arch.log";
$e = fopen($b,"a+");
fwrite($e,$strLog."\n");
fclose($e);
}

?>

Etiquetas: actionscript, cs5, flash, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:00.