Este tutorial nos ayudará a enviar y recibir datos entre Flash y PHP. Para este tutorial ocuparemos un servidor con soporte para de PHP, si no tenemos un servidor con esas características podemos simplemente instalar XAMPP que ya cuenta con Apache, PHP y MySQL, entre otros.
Primero comenzaremos con la parte del lado de Flash. Dentro de Flash crearemos 4 campos de tipo Input Text que les llamaremos: campo1, campo2, campo3 y resultado. Los 3 primeros campos son los datos que le vamos a pasar de Flash a PHP y el último, la respuesta que recibimos. También crearemos un botón que será el encargado de enviar los datos, cuya instancia se denominará botonEnviar.
Ahora pasaremos a hacer la funcionalidad del botón encargado de enviar los datos. Para esto necesitaremos crear una instancia de la clase LoadVars y asignamos las variables para enviar a PHP, por ejemplo:
instanciaDeLoadVars = new LoadVars();
instanciaDeLoadVars.variableParaPHP = campoTipoInput.text;
Lo siguiente será llamar a una función propia de LoadVars llamada sendAndLoad. Esta función recibe como parámetros un URL de tipo String, ua variable de tipo Object y un método tipo String (los valores podrían ser GET ó POST). ASí, lo siguiente sería llamar a esa función:
instanciaDeLoadVars.sendAndLoad("http://miservidor/archivo.php", instanciaDeLoadVars, "POST");
Una vez ejecutado el script PHP y si todo salió bien, este regresará una variable llamada por default de tipo booleana a la que llamaremos exito. Esta variable la tomaremos con el evento onLoad y asignaremos las variables recibidas al campo de texto resultado.
Ahora realizaremos la parte del lado de PHP. Aca lo haremos es recibir los datos de Flash y asignarlos en variables de PHP y volverlas a mandar a Flash con alguna modificación.
$variableParaEnviarAFlash = "Resultado con: ".$_POST["variableRecibidaDeFlash"];
echo "&variable=".$variableParaEnviarAFlash;
Ahora el ejemplo en concreto:
ActionScript
botonEnviar.onRelease = function () {
//Creación de la instacia LoadVars es que es la encargada de
//enviar y recibir los datos entre Flash y PHP
loadVars = new LoadVars();
//Asignación de las variables de Flash a PHP
loadVars.campo1 = campo1.text;
loadVars.campo2 = campo2.text;
loadVars.campo3 = campo3.text;
//Llamado a la función que se encargará de enviar y recibir los datos,
//esta función toma como parámetros un URL, un objeto y un método de envio.
loadVars.sendAndLoad("http://localhost/test/datos.php", loadVars, "POST");
//Mensaje que se desplegará mientras los datos están cargandose.
resultado.text = "Cargando Datos...";
//Evento que llamado cuando se carguen los datos.
loadVars.onLoad = function(exito) {
if(exito){
//Si se recibieron los datos exitosamente se asignan las varibles de PHP
//al campo de texto resultado
resultado.text = this.resultado1 + "\n" + this.resultado2 + "\n" + this.resultado3;
}else{
//Si ni concluyó exitosamente se desplegará un mensaje de error
resultado.text = "No se pudieron cargar los datos";
}
};
};
PHP
//Asiganación de las variables que tomadas de Flash a PHP
$resultado1 = "Resultado #1 con: ".$_POST["campo1"];
$resultado2 = "Resultado #2 con: ".$_POST["campo2"];
$resultado3 = "Resultado #3 con: ".$_POST["campo3"];
//Envio de las variables a Flash
echo "&resultado1=".$resultado1;
echo "&resultado2=".$resultado2;
echo "&resultado3=".$resultado3;
?>
| Attachment | Size |
|---|---|
| Tutorial PHP y Flash.zip | 7.02 KB |

Estas usando Flash CS3 pero
Estas usando Flash CS3 pero el código esta en cual versión de ActionScript?
Recuerda que el tutorial está hecho en ActionScript 2 no ActionScript 3.
Pronto haré el mismo tutorial para ActionScript 3.
No me llega el correo
Hola a todo el mundo:
Primero gracias por los aportes.
Mi problema he creado el formulario en flash cs3 y publico la pelicula correspondiente que es la que subo al servidor.
He creado el php correspondiente y tambien lo subo al servidor.
En la programación de la pelicula utilizo form_lv en lugar de loadVars, pero el efecto me parece que es el mismo.
Relleno el formulario y me dice enviado, pero a mi no me llega nada de nada.
He comprobado y mi servidor si que acepta php.
Copio el codigo php por si hay alguien tan amable de ayudarme.
<?php
$nombre = $_POST['nombre'];
$mail = $_POST['mail'];
$telefono = $_POST['empresa'];
$header = 'From: ' . $mail . " \r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";
$mensaje = "Este mensaje fue enviado por " . $nombre . " \r\n";
$mensaje .= "Su e-mail es: " . $email . " \r\n";
$mensaje .= "Su telefono es: " . $telefono . " \r\n";
$mensaje .= "Mensaje: " . $_POST['mensaje'] . " \r\n";
$destinatario = 'salva@aulainfinita.com';
$asunto = 'Solicitud información colegios';
mail($destinatario, $asunto, $mensaje, $header);
echo '&estatus=ok&';
?>
Muchas, muchas gracias al que me pueda ayudar, lo necesito para trabajar.
Un saludo desde Zaragoza. España
SALVA
Buena!
hola, disculpa soy nueva en esta pagina y queria ver el ejemplo en concreto, donde lo puedo ver?
excelente
este ejemplo es muy facil de ntender, soy nuevo en flash y venia buscando entender como hacer para tomer las var en un formulario de flash y pasarlo a un archivo php. muchas gracias viejo
gracias me sirvio por que
gracias me sirvio por que soy un principiante con muchas ganas de aprender utilice el xamp y guarde los archivos en htdocs configurando una conexion con dream weaver y asi me funciono
No me devuelve las variables
sendAndLoad no me devuelve las variables, use tu ejemplo y me sale el mensaje: No se pudieron cargar los datos. estoy sobre un localhost (xampp) Y me esta volviendo loco. Tengo flash cs3 y a la pelicula la exporto (publicar): Reproductor flash 9 (probe tambien
Action Script 2.0 Gracias
Hay muchísimas diferencias,
Hay muchísimas diferencias, de hecho estoy haciendo un pequeño artículo con las diferencias, dentro de poco estará listo.
actionscript 3.0
Hola saludos a todos, nadamas una preguntilla ¿que tanto cambia el codigo para actionscript 3.0? gracias
Es simple, los dos archivos,
Es simple, los dos archivos, el generado por Flash (SWF) y el archivo en PHP (datos.php) deben estar en el mismo directorio. En tu caso deberia haber una archivo en PHP (http://misitio.com.mx/test/datos.php) y otro en Flash en el mismo directorio (http://misitio.com.mx/test/miArchivo.swf). Para probar el ejemplo simplemente escribes en el URL:http://misitio.com.mx/test/miArchivo.swf y listo. Recuerda que deberias escribir la función de esta manera: loadVars.sendAndLoad("http://misitio.com.mx/test/datos.php", loadVars, "POST");
En realidad el archivo en PHP podria estar en cualquier lugar, sólo tienes que colocar en la función sendAndLoad la ruta correcta del archivo en PHP.
Adjunté el ejemplo en Adobe Flash CS3 que se puede descargar acá.
Lo intente pero no hace nada
no se si el path es correcto, usando FTP visualiza misito.com.mx luego una carpeta www y ahi el directorio para el ejemplo test, la pregunta seria mi path es: http://localhost/misitio.com.mx/www/test/datos.php o http://misitio.com.mx/test/datos.phpNo marca ningun error el ejemplo solo dice en la barra de estado Esperando localhost y despues de un rato dice terminado, pero evidentemente no hace nada
Hola. La película puede
Hola. La película puede estar ó no, puede estar en cualquier archivo, siempre y cuando llames a datos.php. El ejemplo lo que hace es simplemente llamar al archivo PHP, procesar los datos y devolver una respuesta para ser desplegada en el archivo de Flash.
Sobre tu ejemplo
Hola, me gustaria preguntarte si, en tu ejemplo, la pelicula de flash esta incrustada en el archivo php al que envias los datos.