Documente Academic
Documente Profesional
Documente Cultură
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.
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 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:
lv = new LoadVars();
lv.unaVariable = algunValor;
lv.send("archivo.php", "_self", "POST");
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
}
lv = new LoadVars();
lv.variable = valor
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.
Cdigo:
<?php
mail("tuCorreo@tuServidor.com", "Probando Ando =)", "Hola Hola!!");
?>
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:
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:
Si ambas condiciones son ciertas creamos una instancia de la clase LoadVars y asignamos
variables para enviar a PHP
Cdigo:
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 = " ";
};
Cdigo:
enviar_btn.onRelease = enviar;
borrar_btn.onRelease = borrar;
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.
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
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
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
Gracias
4. tuk25.03.2004 - 16:56
saludos
jj