Sunteți pe pagina 1din 7

Comunicacin entre Flash y PHP

Las posibilidades para ofrecer contenido intensamente dinamico a nuestros usuarios


aumentan con la posibilidad de comunicar entre Flash y lenguajes de scripting como PHP. El
uso mas comn de esta funcionalidad es para acceder a bases de datos, algo que Flash por si
solo no puede hacer.

Esta seccin explica la comunicacin en ambas direcciones entre Flash y PHP, ofreciendo
cdigo de ambos lenguajes. Al final se propone una prctica para utilizar todo este
conocimiento en un proyecto concreto.

Datos, lgica, apariencia


Un sistema que se basa en una solucin MySQL-PHP-Flash suele dividir responsabilidades
entre los diferentes componentes. La base de datos se encarga de guardar la informacin
de la aplicacin. La parte de la interfaz tiene la tarea de habilitar la interaccin con el usuario
para que manipular la informacin (aadir, editar, borrar). Entre estos dos niveles, tenemos
la lgica de la aplicacin, que establece las reglas y los lmites de toda manipulacin.

Tenemos que tener clara esta divisin - es importante establecer cuales son los datos que se
guardan en la base de datos, y cuales son los datos de la interfaz. Tenemos que asegurarnos
que la interfaz en cualquier momento se pueda regenerar con nueva informacin de la base
de datos, y que a la vez se pueda recoger los datos de la interfaz para guardarlas en la base
de datos.

Modelo asincrono
Tenemos que tener en cuenta que la comunicacin entre Flash, PHP y la base de datos no es
inmediata. Dependiendo de la cantidad de informacin que se manipula y la complejidad de
la manipulacin, puede que pase un tiempo desde el momento que Flash solicite unos datos
hasta que los recibe. Adems, igual hay problemas por el camino (la base de datos esta
offline, por ejemplo). La interfaz tiene que seguir funcionando si los datos nunca llegan.

La manera de programar la comunicacin es la siguiente:

Asignamos una funcin a ejecutar cuando lleguen los datos.


Asignamos una funcin por si se genera un error en la carga.
Pedimos a php que nos traiga unos datos de la base de datos.
Pasa un tiempo, y si los datos se reciben bin, se llama la primera funcin. Si hay
cualquier error se llama la segunda funcin.

La clase LoadVars
La clase LoadVars forma la base de la comunicacin entre Flash y PHP. Usando un objeto
LoadVars podemos enviar datos a PHP y recuperar datos desde PHP. Miramos las diferentes
opciones:

Enviando datos a PHP


Usando el mtodo send() de LoadVars, podemos enviar datos a una pgina de PHP.
Insertamos una serie de variables al objeto LoadVars, hacemos una llamada a un php, y este
php recibe las variables con sus correspondientes valores.

lv = new LoadVars();
lv.unaVariable = algunValor;
lv.send("archivo.php", "_self", "POST");

Flash no espera recibir respuesta de esta comunicacin uni-direccional. Al hacer la llamada a


send(), especificamos tambin en que ventana se visualiza la pgina php solicitada: se
puede visualizar en la misma ventana donde estaba la pelicula de Flash, reemplazndola, o
en una ventana nueva.

Recibiendo datos desde PHP


Usando el mtodo load() de LoadVars, podemos solicitar informacin desde una pgina php.
PHP nos devuelve una serie de variables, las cuales luego podemos usar desde dentro de
Flash.

Para que una pgina php se use de esta forma, tiene que crear un HTML muy sencillo, con
los nombres y los valores de las variables que quiere pasar usando esta sintaxis:

variable1=unValor&variable2=otroValor&variable3=todaviaOtroValor&

Es importante tener en cuenta que la funcion load tiene un efecto asncrono - es decir, la
respuesta puede tardar en llegar. Por eso, programamos el evento onLoad del loadVars para
responder a la carga de variables despus de una load.

lv = new LoadVars();
lv.load("url.php");

lv.onLoad = function(){
trace(this["variable1"]); // imprime el valor de la variable llamada
variable1
}

Enviando y recibiendo datos a PHP


La forma mas completa de comunicar es usando el mtodo sendAndLoad(). As podemos
solicitar una pgina PHP, pasndole a la vez unos datos. El PHP usa los datos estos para
acceder a la base de datos o hacer sus operaciones, y luego nos devuelve unos valores.
Flash recibe estos valores para luego visualizarlos adecuadamente.

lv = new LoadVars();
lv.variable = valor

lv.sendAndLoad("url.php", lv, "POST");


lv.onLoad = function(){
//procesa la respuesta
}
Manejando formularios con Flash y PHP
Por Carlos Enrique Chavez Garca

Este tutorial nos ayudar a realizar un formulario a travs de flash que se enviar por
correo utilizando el soporte de PHP y la funcin de mail del servidor.

Para este formulario, necesitaremos un servidor con soporte PHP y la funcin mail
activada. Como sabemos si tenenos dicha funcin?, simple.

Crea un nuevo archivo PHP ("send.php") y pones el siguiente cdigo.

Cdigo:

<?php
mail("tuCorreo@tuServidor.com", "Probando Ando =)", "Hola Hola!!");
?>

Sbelo a tu servidor y prubalo www.tuServidor.com/send.php, Si todo esta bien te


saldr una pagina en Blanco en el navegador y a tu casilla llegara dicho correo.

Bien, Una vez comprobado esto seguimos.

Primero trabajaremos el Fla:


Creamos una nueva pelcula, sobre el escenario creamos 4 campos de texto de entrada
InputText y les damos nombre de instancia, y creamos 2 botones "enviar_btn" y
"borrar_btn"

Crearemos 2 funciones una para enviar las variables a PHP y otra funcin para borrar los
datos del formulario.
Funcin enviar:
Cdigo:

enviar = function () {
if (email_txt.text.length && nombre_txt.length &&
titulo_txt.length && mensaje_txt.length) {
if (email_txt.text.indexOf("@") != -1 &&
email_txt.text.indexOf(".") != -1) {
form_lv = new LoadVars();
form_lv.nombre = nombre_txt.text;
form_lv.mail = email_txt.text;
form_lv.mensaje = mensaje_txt.text;
form_lv.titulo = titulo_txt.text;
form_lv.sendAndLoad("http://www.tmeister.net/send.php",
form_lv, "POST");
mensaje_txt.text = "Enviando Mensaje..";
nombre_txt.text = "";
email_txt.text = "";
titulo_txt.text = "";
form_lv.onLoad = function() {
if (this.estatus == "ok") {
mensaje_txt.text = "Tu mensaje fue enviado...";
nombre_txt.text = "";
email_txt.text = "";
titulo_txt.text = "";
} else {
mensaje_txt.text = "Problemas con el
servidornIntentalo de Nuevo";
}
};
} else {
email_txt.text = "Correo Invalido";
}
} else {
email_txt.text = "Dato Necesario";
nombre_txt.text = "Dato Necesario";
titulo_txt.text = "Dato Necesario";
mensaje_txt.text = "Dato Necesario";
}
};

Cdigo:

if (email_txt.text.length && nombre_txt.length && titulo_txt.length &&


mensaje_txt.length)

Con esto comprobamos que al presionar el boton todos los campos de texto no estn vacos,
si esta condicin no se cumple en los campos aparecer el texto "Dato Necesario";

Cdigo:

if (email_txt.text.indexOf("@") != -1 && email_txt.text.indexOf(".") !


= -1) {

Esta comprobacin revisa que el mail introducido tenga la @ y un punto .;

Si ambas condiciones son ciertas creamos una instancia de la clase LoadVars y asignamos
variables para enviar a PHP
Cdigo:

form_lv_lv = new LoadVars();


form_lv.nombre = nombre_txt.text;
form_lv.mail = email_txt.text;
form_lv.mensaje = mensaje_txt.text;
form_lv.titulo = titulo_txt.text;
form_lv.sendAndLoad("send.php", form_lv, "POST");
mensaje_txt.text = "Enviando Mensaje..";
}

Una vez ejecutado el Script PHP y si todo salio bien, este, regresara una variable llamada
status que tomaremos con el evento onLoad

Cdigo:

form_lv.onLoad = function() {
if (this.estatus == "ok") {
mensaje_txt.text = "Tu mensaje fue enviado.
nGracias.... =)";
nombre_txt.text = " ";
email_txt.text = " ";
titulo_txt.text = " ";
} else {
mensaje_txt.text = "Problemas con el
servidornIntentalo de Nuevo";
}
};

Funcin borrar:
Con esta funcin solo borraremos los datos que tengan los campos de texto.

Cdigo:

borrar = function () {
nombre_txt.text = " ";
email_txt.text = " ";
mensaje_txt.text = " ";
titulo_txt.text = " ";
};

Esto no necesita mucha explicacin =P

Por ultimo asignamos dichas funciones a los eventos de los botones

Cdigo:

enviar_btn.onRelease = enviar;
borrar_btn.onRelease = borrar;

Y esto es todo en Flash.. Seguimos con el PHP..

Cdigo:

<?php
if(isset($_POST["nombre"]) && isset($_POST["titulo"])
isset($_POST["email"])
isset($_POST["mensaje"]) ){
$fecha = date("d-M-y H:i");
$mymail = "tuCorreo@tuServidor.com";
$subject = "Desde el Sitio.. =)";
$contenido = $nombre." Escribio :\n";
$contenido .= $mensaje."\n\n";
$contenido .= "el mensaje se escribio el ".$fecha;
$header = "From:".$mail."\nReply-To:".$mail."\n";
$header .= "X-Mailer:PHP/".phpversion()."\n";
$header .= "Mime-Version: 1.0\n";
$header .= "Content-Type: text/plain";
mail($mymail, $subject, utf8_decode($contenido) ,$header);
echo "&estatus=ok&";
}
?>

La funcin isset verifica que una variable exista, en este caso verificamos que las cuatro
variables existan antes de enviar el mail.

Los parmetros de la funcin mail de PHP son:

Para: Correo destino. En este caso $mymail


Titulo: Titulo del Correo. En este caso $subject
Mensaje: Cuerpo del correo. En este caso $contenido
Headers o cabeceras: Son las cabeceras del correo, donde se especifica el tipo
de contenido (texto plano, texto HTML), entre muchas otras opciones que no
mencionare.

Una vez enviado el mail el PHP regresa la variable status que Flash interpretara... Si dicha
variable existe es que todo funcino... =)

NOTA: Para enviar un correo en formato HTML solo necesitas escribir el cuerpo del mensaje
con dicho formato (HTML) y en los headers especificarlo, esto se hace cambiando Content-
Type: text/plain por Content-Type: text/html

Para ms informacin sobre la funcin mail Click Aqui

Bajar Zip

Sobre el autor
Por Carlos Enrique Chavez Garca
Colaborador del proyecto de computadora.de

Imprimir | del.icio.us |

Comentarios
189 comentarios en total.

1. guiye11.03.2004 - 18:49

gracias, anda y bien

2. Unregistered24.03.2004 - 09:41
felicitaciones

3. Albert25.03.2004 - 10:58

Cuando hago la prueba para ver si mi servidor acepta php me sale correcto. Pero
cuando ya hago el codigo grande con con if... etc me da este error en la pagina:
Parse error: parse error in /home/httpd/vhosts/montana-del-mar.com/httpdocs/se
nd.php on line 10

Que me puede pasar?

Gracias

4. tuk25.03.2004 - 16:56

$_POST no funciona en la mitad de los servidores que hay en el mundo.

el fix para esto es:

$_POST = ($_POST ? $_POST : $HTTP_POST_VARS);

saludos
jj

S-ar putea să vă placă și