Comunidad PHPeros
Lenguajes => Flash y ActionScript => Mensaje iniciado por: RamFu en 05 de Diciembre de 2007, 01:06:06 am
-
Buenas phper@ ;)
Hoy les traigo algo nuevo, no es simple ni tampoco complicado. Si de verdad te interesa flash y estás dispuesto a realizar trabajos con él, te va a interesar este tutorial. Vamos a crear un pequeño sistema de usuarios en este post, y en otro vamos a ampliarlo, a cargar mas variables.
Antes de comenzar...
Bien, lo primero, es plantearse un esquema parecido a este:
FLASH: MANDA UNA CONSULTA A PHP.
PHP: RECOJE LA CONSULTA REALIZADA POR FLASH, Y MANDA UNA RESPUESTA.
FLASH: MUESTRA LA RESPUESTA.
Nos ayudará en la realización del código fuente. Ahora, empecemos a trabajar ;)
Vamos a ir a nuestro escritorio y vamos a crear una carpeta donde vamos a almacenar todos los documentos de este tutorial; Por ejemplo la llamaremos: Registro.
Dentro de registro vamos a crear una nueva carpeta que se llame: PHP. Aqui vamos a introducir todos los documentos PHP que necesitemos.
Una vez echo esto, vamos a abrir un nuevo documento de texto (Bloc de Notas o Notepad) y vamos a plantearnos la estructura de nuestra tabla. Vamos a llamarla: 'usuarios' Nos queda una cosa así:
CREATE TABLE usuarios (
id bigint(7) NOT NULL auto_increment,
nick char(100) NOT NULL,
password char(100) NOT NULL,
KEY id (id))
Creo que por el momento bastará con esto.
Lo guardamos con la extensión .sql (por ejemplo db.sql) en la carpeta que previamente hemos creado.
Registro
Ahora, nos vamos a Flash; Abres flash y creas un nuevo documento. Será nuestro archivo de registro. Sólo va a tener 2 campos y un espacio para el botón.
Mi tamaño del lienzo es de 300x200. Lo podemos decorar como queramos, yo lo dejo simple, dos campos de texto con lo que es cada uno arriba, y un botón enviar. Todo esto ocurre en el fotograma 1. Bien, vemos dos campos de texto. Són del tipo: "Introducción de texto" y tienen la opción de borde activada. Al campo del usuario de nick lo llamaremos "user" y al campo del usuario de la password: "pass". Al campo pass, cuando lo seleccinais, hay una opcion en propiedades que que sale una A enmarcada, esta abajo del todo. Y os pondrá "Línea Única" Si abrís eld esplegable, el último valor es "Contraseña" Lo selecciáis. Con esto hacemos que cuando el user escriba la pass, le salga el típico * en vez de su password. Al botón le daremos el nombre "but".
Ah! se me olvidaba! También creen un campo de texto Dinámico y lo llaman respuesta. Es donde el usuario va a recibir la respuesta del servidor como: Contraseña incorecta, usuario no existe en la bd, etc.
Bien, ahora dejamos la parte física y nos metemos en el código. Al fotograma 1 le damos el siguiente código:
stop();
enviar = function () {
if (user.text.length) {
if (pass.text.length) {
// Que enviamos al PHP?
form_lv = new LoadVars();
form_lv.usuL = user.text;
form_lv.passL = pass.text;
respuesta.text = "Conectando...";
// Hacemos un sendAndLoad a registrar.php
form_lv.sendAndLoad("http://www.tuweb.com/registro/php/registro.php", form_lv, "POST");
// Una vez recibida la información, damos respuestas:
form_lv.onLoad = function() {
if (this.estatus == "ko")
{
respuesta.text = "Nombre Ocupado";
user.text = "";
}
if (this.estatus == "ok") {
proces.text = "Registrado con exito!";
}
if (this.estatus != "ko" && this.estatus!= "ok")
{
respuesta.text = "Error de conexión"
} //Hemos definido alguna URL mal (aqui no tendríamos que llegar)
}
}
}
else
{
respuesta.text = "Password Vacía";
} //Contraseña: 0
}
{
respuesta.text = "Usuario Vacío"
}//User: 0
but.onRelease = enviar;
Ahora que tenemos el Registro en Flash, nos queda la parte PHP del registro. Es muy simple sólo tenemos que fijarnos en las variables y los nombres de las funciones que hemos puesto en el flash, y crear un documento en PHP. Como bien hemos dicho en el Código AS, hemos llamado al archivo registro.php así que creamos un documento nuevo en PHP que se llame registro.php Haremos algo así:
<?php
include('conectar.php'); // Conectar.PHP inprescindible!!
$link = Conectarse();
function quitar($mensaje) // Elimina algunos carácteres indeseados en el registro (Estan en HTML).
{
$mensaje = str_replace("<","<",$mensaje);
$mensaje = str_replace(">",">",$mensaje);
$mensaje = str_replace("\'","&#39;",$mensaje);
$mensaje = str_replace('\"',""",$mensaje);
$mensaje = str_replace("\\\\","&#92;",$mensaje);
return $mensaje;
}
if($row = mysql_fetch_array($result))
{
echo "&estatus=ko&"; // El nick ya esta en uso!
}
else
{
$sql = "INSERT INTO usuarios (nick, password) VALUES (";
$sql .= "'".quitar($HTTP_POST_VARS["usuL"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["passL"])."'";
$sql .= ")";
mysql_query($sql);
echo "&estatus=ok&"; // Regisro OK
}
mysql_free_result($result);
mysql_close();
}
?>
Vale! Ya tenemos un registro echo :D Ahora viene la parte que quizás sea un poco mas complicada, pero ya veréis como la sacamos ;)
Login
Guardamos el Archivo FLA del registro como reg.fla ya que despues tocaremos el código para modificar la URL del PHP. Bien una vez guardado creamos otro documento de flash, será la pantalla de login. Lo mismo que en el anterior; 3 campos (user, pass y respuesta) y un botón (but) Aqui crearemos un nuevo fotograma vacio que será el lugar donde llevaremos a los usuarios logueados ;)
Vamos con el primer fotograma;
La estructura nombrada anteriormente. La montáis. Bien, ahora comprobamos los datos; el campo para escribir el nick tiene el nombre 'user' el de la password 'pass' el que nos da respuesta, 'respuesta' y el botón se llama 'but'
Bien, vamos con el código AS;
stop();
enviar = function () {
if (user.text.length) {
if (pass.text.length) {
// Que enviamos al PHP?
form_lv = new LoadVars();
form_lv.usu = user.text;
form_lv.pass = pass.text;
respuesta.text = "Conectando...";
form_lv.sendAndLoad("http://www.tuweb.com/registro/php/entrar.php", form_lv, "POST");
form_lv.onLoad = function()
{
if (this.estatus == "pass")
{
respuesta.text = "Contraseña Incorrecta!";
}
if (this.estatus == "ko") {
respuesta.text = "El usuario no existe!";
usu.text = "";
pass.text = "";
}
if (this.estatus == "ok") {
respuesta.text = "Conectado!";
gotoAndStop(2);
}
if (this.estatus != "pass" && this.estatus!= "ko" && this.estatus!= "ok")
{
respuesta.text = "Problemas de conexión";
}// Aqui no deberiamos llegar!
};
}
else
{
respuesta.text = "Contraseña Incorrecta";
}
}
else
{
respuesta.text = "Insertar nombre de usuario";
}
};
but.onRelease = enviar;
Lo mismo que en el registrar, miramos el Flash y nos fabricamos un PHP como éste (entrar.php):
<?php
include('conectar.php'); // Conectar.PHP Inprescindible!!!!
$link = Conectarse();
if(isset($_POST["pass"]) && isset($_POST["user"]))
{
$nickN = $_POST["user"];;
$passN = $_POST["pass"];;
$result = mysql_query("SELECT password FROM usuarios WHERE nick='$nickN'"); // Consultamos la BD
if($row = mysql_fetch_array($result))
{
if($row["password"] == $passN) // Coincide el user con la contraseña?
{
echo "&estatus=ok&"; // Siii!!! :D
}
else
{
echo "&estatus=pass&"; // No.... :(
}
}
else
{
echo "&estatus=ko&"; // El usuario no se encuentra en la BD xD
}
mysql_free_result($result);
}
mysql_close();
?>
Bueno, ahora en el fotograma 2, vamos a crear una pequeña nterface para nuestro usuario. Vamos a crear un texto que diga: "Hola, "y otro texto a continuación con el nombre de 'nick'. En acciones nos vamos y ponemos:
nick.text = _root.user.text
Ahora ya es cuestión tuya decorarlo como quieras, crear mas variables, etc. Un saludo gente espero que os sirva!! Aqui les dejo elr esultado final ;) Pero estaría bien que lo intenten hacer, asi seguroque aprenden mas.
QUE MAS ME FALTA?
El conectar.php se lo dejo aqui:
<?
function Conectarse()
{
$db_host="tu_host";
$db_nombre="nombre_base_de_datos";
$db_user="nombre_de_usuario_de_la_base_de_datos";
$db_pass="contraseña_del_usuario_de_la_bd";
// Respuestas
$link=mysql_connect($db_host, $db_user, $db_pass) or die ("Error conectando a la base de datos!");
// Seleccionamos la base de datos que nos interesa!
mysql_select_db($db_nombre ,$link) or die("Error seleccionando la base de datos.");
return $link;
}
?>
Recuerden subir los PHP's y editar las rutas de los archvos en cada FLA. Depsués creen el SWF (CONTROL -> PROBAR PELÍCULA) y suban los SWF. Dudas, etc. Posteen aqui ;)
Saludos, RamFu :P
http://info-jc.com/files/Registro.rar
-
RamFu eres un crack! jejejeje KARMA +
Estupendo tutorial, ya hacia falta algo así para meternos mas en el tema de la interaccion Flash-PHP ;)
Muchas gracias!!
-
Gracias naveda :D Seguiré posteando tutoriales sobre Flash y PHP a ver qué tal ;) Gracias por el karma!
-
Muchisimas gracias, sigue así crack ;)
Te has ganado un karma pero bien ganado, como te lo curras tio ;)
-
Gracias G2K!
-
Wow, eso se hace con Flash¿? :o
Pense que se hacia con C/C++ o VisualBasic
Buen aporte
-
Hola, lei tu tutorial y esta muy completo, descargue los archivos, segui las instrucciones y probe en local... me saco problemas de conexion
lo probe en un servidor y me siguen los problemas
me pueden ayudar por favor?? estoy DESESPERADO
hasta pronto
-
Problemas de conexón? Revisa todos los datos!!!
-
primer tutorial de flash que entiendo al 80% xDDDD graciass +karma
pregunta
if (this.estatus == "ok") {
proces.text = "Registrado con exito!";
}
cual es el proces?
-
porque usas:
$HTTP_POST_VARS
en ves de
$_POST
Saludos, Dacan ;D
-
amss no entendi xDD
tampoco entiendo el registro.php porque ai un ultimo } :S me dice unexpected
el registro no me funca para nada :S cuando le doy a el boton para registrarme no hace nada luego en registrar.php me sale todo mal y no se porque hay un extra } y no se de donde saco la variable $result estoy toda liadaaaa ayudaaaaaaa
-
A ver, registro.php bueno:
<?php
include('conectar.php'); // Conectar.PHP inprescindible!!
$link = Conectarse();
function quitar($mensaje) // Elimina algunos carácteres indeseados en el registro (Estan en HTML).
{
$mensaje = str_replace("<","<",$mensaje);
$mensaje = str_replace(">",">",$mensaje);
$mensaje = str_replace("\'","&#39;",$mensaje);
$mensaje = str_replace('\"',""",$mensaje);
$mensaje = str_replace("\\\\","&#92;",$mensaje);
return $mensaje;
}
if($row = mysql_fetch_array($result))
{
echo "&estatus=ko&"; // El nick ya esta en uso!
}
else
{
$sql = "INSERT INTO usuarios (nick, password) VALUES (";
$sql .= "'".quitar($HTTP_POST_VARS["usuL"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["passL"])."'";
$sql .= ")";
mysql_query($sql);
echo "&estatus=ok&"; // Regisro OK
}
mysql_free_result($result);
mysql_close();
?>
Lo del boton, se mira en el code AS:
but.onRelease = enviar;
Asegurate que el boton se llama "but", y no esta enningun movieclip, es decir en la escena 1.
Un saludo!
-
hola a todos espero que me puedan ayudar en este tema.
tengo todo ok los usuario se muestran en la base de datos, pero no me muestra el user en el flash aparece "HOLA, undefined"
este es el codigo del flash;
stop();
usuario.text = _root.user.text;
obviamente el campo usuario existe como texto dinamico.
espero su ayuda saludos.
-
RamFu, lo he intentado, pero hay un fallo o esque yo he hecho algo mal, lo hize primero con el mio propio, y despues con el tuyo, y me da el siguiente error en el registro.php:
Parse error: syntax error, unexpected '}' in /home/virtual/sitio185472/www/popotipo/registro.php on line 28
en la linea 28, hay un parentesis asi: }, eso le provoca algo, y si lo borro, hay mas problemas, cual es el problema ???
-
Me parece que el problema esta solucionado arriba..
-
ahora me da otros problemas :S, me sale esto:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/virtual/sitio185472/www/popotipo/registro.php on line 13
&estatus=ok&
Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /home/virtual/sitio185472/www/popotipo/registro.php on line 26
que hago :(
-
Comprueba:
include('conectar.php'); // Conectar.PHP inprescindible!!
Que se llame conectar.php este correcto confuigurado.
Saludos
-
lo he comprobado, usando esos datos para la coneccion de un minichat y funciona :S, pero no entiendo por que no funciona en el registro :S, he estado mirando, y el error dice que esta en la linea 13 y 26:
13:if($row = mysql_fetch_array($result))
26:mysql_free_result($result);
y lo que no entiendo es esto en la pagina de error dice esto: &estatus=ok& que significa: // Regisro OK
-
Esque el error, esta cuando comprueba el MYSQL... comprueba que tienes las tablas de mysql correctas, vuelve a revisar en CONECTAR.PHP, etc. todo lo que tenga que ver con MYSQL...
-
He estado mirando algunas cosillas, que creo que estaban mal, ahora, si, sabe cuando conecta con la DB :D, pero se queda: Conectando..., eso a que es debido?, por si lo quieres ver: http://elconcurso.webspacemania.com/funcara/reg.html
-
puede ser por el host pero fijate si se ha insertado en la base de datos
-
jaja cierto =).
-
no es por nada xD , pero, como se mira si se han insertado los datos xD
-
Entrando en el administrador de bases de datos de tu sitio (o phpmyadmin). Saludos!
-
Porque a mi con webspacemania se tardaba mil años diciendo "Conectando ..." y luego ya se habia insertado o algo así. xD
-
a ok, ya lo veo xD, si se han insertado, entonces era que yo puso una cosa mal, ya esta, gracias RamFu por tu ayuda. +1
PD: mirad lo que hize :)
http://elconcurso.webspacemania.com/Wapiximo,%20un%20navegador%20KD.html
para usarlo como un chat virtual, mmm, como que no funcionaria, por la forma que lo hize, pero como estoy probando lo hize asi :D, espero que hos guste
-
Ta bien xD
-
Esta bueno =).
-
dame 1 ejemplo de que poner en:
form_lv.sendAndLoad("http://www.tuweb.com/registro/php/entrar.php", form_lv, "POST")
que web pongo?
-
Error, www.tuweb.com representa TU web.. por ejemplo si es gratishost o webspacemania
http://tutoflash.webspacemania.com .. www.error.com, http://tutoflash.gratishost.com .. etc.
-
el error esta en el entrar.php o en el registrar.php
-
Una pregunta con el nombre de cada campo de texto te refieres a la variable?
En tal caso la variable del campo de texto de usuarios seria "user" y la de la contraseña seria "pass" no?
-
Ami me sale en el reg. html, sale:
Error de conexión
y revise los datos en el conectar. php (PHP/conectar. php) y esta todo bien =S Miren. . .
$db_host="localhost";
$db_nombre="usuarios";
$db_user="root";
$db_pass="****No rellene este campo para que no viera nadie xD, Pero puse una contraseña. . . *****";
¿Alguna ayuda?