Hola Ceaped, yo me hecho una web en flash con registro de usuarios k creo k es lo k necesitas pa los planos y demas, k consistira en una pagina privada donde estaran esos ficheros y a la k solo se accedera habiendo introducido un login y password adecuado. (Intentare no liarte muxo poniendolo clarito okis ;)--Yo tb me e dado muxas tortas en este tema--
//Paso 1->Crear tabla con campos en la DataBase//
En primer lugar tienes k tener claro lo k les pides en el registro para crearte una tabla en tu DB (base de datos). Yo por ejemplo, si entras a la web k he hecho
www.pub-elements.com pido nombre,login,password,edad...Cada uno de estos parametros es un campo en la tabla de la base de datos. Ejemplo, yo he creado una tabla llamada "usuarios" con los campos "nick","password","nombre","edad", "ciudad". Este es el primer paso okis.
//Paso 2->Crear pagina "registro.fla"//
Exacto! Tienes k diseñarte una pagina en la k pondras (yo lo he hecho asi),una capa con Texto estático, pa nombrar lo de "Esto es pagina de registro", "Usename" , "password", etc. Que es el texto fijo que anuncia lo k pones en cada casilla.
En otra capa te creas tantos InputText (campos de introduccion de texto) como casillas kieras k rellene tu usuario y en cada una pones en Nombre de instancia lo k consideres oportuno, yo p.ejemplo, usu (para el login), pass (para la contraseña), etc. Pa hacerlo mas bonito puedes poner tb un Dinamic Text con nombre de Variable "Proces" que te indica el estado en cada momento del registro.
Cuando tengas hecho esto tienes que poner en el keyframe de la pelicula (en mi caso es el ultimo) el siguiente ActionScript:
enviar = function ()
{
if (usu.text.length) //comprobamos que el nombre de usuario no este vacío
{
if (pass.text.length) //Comprobamos que la contraseña no este vacía
{
if (mail.text.length) //Comprobamos que la dirección de e-mail no este vacía
{
//Preparamos las variables que enviaremos al php
form_lv = new LoadVars();
form_lv.usuL = usu.text;
form_lv.passL = pass.text;
form_lv.mailL = mail.text;
form_lv.nombreL = nombre.text;
form_lv.ciudadL = ciudad.text;
form_lv.edadL = edad.text;
proces.text = "conectant amb base de dades...";
//Enviamos las variables a registrar.php
form_lv.sendAndLoad("registrar.php", form_lv, "POST"); //escribe URL real de
registrar.php
//Recibimos y manejamos las variables que vienen de registrar.php
form_lv.onLoad = function()
{
if (this.estatus == "ocupado")
{
proces.text = "";
usu.text = "";
gotoAndStop(46); //Alerta: Nick ocupado
}
if (this.estatus == "nomail") {
proces.text = "";
mail.text = "";
gotoAndStop(47); //Alerta: e-mail icorrecto
}
if (this.estatus == "ok") {
proces.text = "Registrat amb exit!";
usuvar = usu.text;
mailvar = mail.text;
nombrevar = nombre.text;
ciudadvar = ciudad.text;
edadvar = edad.text;
usu.text = "";
mail.text = "";
nombre.text = "";
ciudad.text = "";
edad.text = "";
gotoAndPlay(49); //Ingreso exitoso
}
if (this.estatus != "ocupado" && this.estatus!= "nomail" && this.estatus!= "ok")
{
proces.text = "";
gotoAndStop(48); //Alerta: problemas con el servidor
}
};
}
else
//Alertas de campos vacíos
{
gotoAndStop(43); //campo mail vacío
}
}
else
{
gotoAndStop(44); //campo contraseña vacío
}
}
else
{
gotoAndStop(45); //campo nombre de usuario vacío
}
};
enviar_btn.onRelease = enviar;
stop();
//Paso 3->Hacer el codigo en php//
Hasta aqui tendrias la parte en flash y solo del registro, mas adelante explicare la forma de k el usuario ponga el login pa acceder. Ahora habria que conectar este .fla con la base de datos pa lo k se hace con php.
Yo lo tengo asi, primero un "conexion.php" con el siguiente codigo:
<? // Fichero con los datos de conexión a la BBDD
function Conectarse()
{
$db_host="XXXXX"; // Host al que conectar, habitualmente es el ‘localhost’
$db_nombre="XXXXX"; // Nombre de la Base de Datos que se desea utilizar
$db_user="XXXXX"; // Nombre del usuario con permisos para acceder
$db_pass="XXXXX"; // Contraseña de dicho usuario
// Ahora estamos realizando una conexión y la llamamos ‘$link’
$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.");
// Devolvemos $link porque nos hará falta más adelante, cuando queramos hacer consultas.
return $link;
}
?>
Y un archivo llamado "registrar.php" con este codigo:
<?php
include('conexion.php'); //conectamos con la base de datos
$link = Conectarse();
function quitar($mensaje) //elimina símbolos indeseados
{
$mensaje = str_replace("<","<",$mensaje);
$mensaje = str_replace(">",">",$mensaje);
$mensaje = str_replace("\'","'",$mensaje);
$mensaje = str_replace('\"',""",$mensaje);
$mensaje = str_replace("\\\\","\",$mensaje);
return $mensaje;
}
//comprobamos con esta función que la dirección de email escrita es correcta
function comprobar_email($email){
$mail_correcto = 0;
//Hacemos una primera comprobación
if ((strlen($email) >= 6) && (substr_count($email,"@") == 1) && (substr($email,0,1) != "@") &&
(substr($email,strlen($email)-1,1) != "@")){
if ((!strstr($email,"'")) && (!strstr($email,"\"")) && (!strstr($email,"\\")) && (!strstr($email,"\$")) &&
(!strstr($email," "))) {
//miro si tiene caracter .
if (substr_count($email,".")>= 1){
//obtengo la terminacion del dominio
$term_dom = substr(strrchr ($email, '.'),1);
//compruebo que la terminación del dominio sea correcta
if (strlen($term_dom)>1 && strlen($term_dom)<5 && (!strstr($term_dom,"@")) ){
//compruebo que lo de antes del dominio sea correcto
$antes_dom = substr($email,0,strlen($email) - strlen($term_dom) - 1);
$caracter_ult = substr($antes_dom,strlen($antes_dom)-1,1);
if ($caracter_ult != "@" && $caracter_ult != "."){
$mail_correcto = 1;
}}}}}
if ($mail_correcto)
return 1; //mail correcto
else
return 0; //mail incorrecto
}
$comp_email = quitar($HTTP_POST_VARS["mailL"]);
$i = comprobar_email($comp_email); //llamamos a la función
if ($i != 0) //si la dirección de email es correcta...
{
$sql = "SELECT id FROM usuarios WHERE nick='".quitar($HTTP_POST_VARS["usuL"])."'";
$result = mysql_query($sql);
if($row = mysql_fetch_array($result))
{
echo "&estatus=ocupado&"; //nick ocupado
}
else
{
//insertamos los datos en nuestra base de datos
$sql = "INSERT INTO usuarios (nick, password, email, nombre, ciudad, edad) VALUES (";
$sql .= "'".quitar($HTTP_POST_VARS["usuL"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["passL"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["mailL"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["nombreL"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["ciudadL"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["edadL"])."'";
$sql .= ")";
mysql_query($sql);
echo "&estatus=ok&"; //registro exitoso
}
mysql_free_result($result);
mysql_close();
}
else
{
echo "&estatus=nomail&"; //mail incorrecto
}
?>
----FIN DEL REGISTRO----
----INICIO CONFIRMACION USUARIO----
Ahora necesitaras una pagina en donde saldra nuevamente un cuadro con login otro con password y un boton de confirmar. (El nombre del boton es importante como en el caso anterior)
//Paso 4->Flash//
Basicamente es lo mismo que para el registro, cuadros estaticos y 2 InputText con nombre instancia "usu" y "pass" para usuario y contraseña. El boton para mi es "enviar_btn2".
El ActionScript tb en el keyframe correspondiente seria:
enviar = function ()
{
if (usu.text.length) //comprobamos si el campo de texto usu no esta vacio
{
if (pass.text.length) //comprobamos si el campo de texto pass no esta vacío
{
//preparamos variables
form_lv = new LoadVars();
form_lv.usu = usu.text;
form_lv.pass = pass.text;
proces.text = "transferint dades...";
//enviamos variables a ingresar.php
form_lv.sendAndLoad("ingresar.php", form_lv, "POST"); //inserta la URL real de tu ingresar.php
form_lv.onLoad = function()
{
//analizamos la variable devuelta por ingresar.php
if (this.estatus == "pass")
{
proces.text = "password incorrecte";
}
if (this.estatus == "nousu") {
proces.text = "Usuari inexistent";
usu.text = "";
pass.text = "";
}
if (this.estatus == "ok") {
proces.text = "usuari i password correctes!";
//direccionamos a la zona privada
gotoAndStop(264);--Si fuera un acceso a un keyframe de la misma pagina----sino pon ---loadMovieNum ("xxxx.swf",1);--Direcciona a otra--
stopAllSounds();--Esto es pq mi web lleva musica y la quito
//inserta la URL real de tu privado.swf
}
if (this.estatus != "pass" && this.estatus!= "nousu" && this.estatus!= "ok")
{
proces.text = "Problemes amb el servidor";
}
};
}
else
{
pass.text="Introdueix password";
}
}
else
{
usu.text = "Introdueix nom d'usuari";
}
};
enviar_btn2.onRelease = enviar;
stop();
//Paso 5->Codigo de "ingresa.php"
<?php
include('conexion.php'); //conectamos con la base de datos
$link = Conectarse();
if(isset($_POST["pass"]) && isset($_POST["usu"]))
{
$nickN = $_POST["usu"];
$passN = $_POST["pass"];
$result = mysql_query("SELECT password FROM usuarios WHERE nick='$nickN'"); //consultamos BD
if($row = mysql_fetch_array($result))
{
if($row["password"] == $passN) //comprobamos si coinciden las contraseñas
{
echo "&estatus=ok&"; //las contraseñas coinciden
}
else
{
echo "&estatus=pass&"; //contraseña incorrecta
}
}
else
{
echo "&estatus=nousu&"; //El usuario no se encuentra en la BD
}
mysql_free_result($result);
}
mysql_close();
?>
---FIN---
El que te diga en la zona privada el tipico "Hola fulano" aun no se como se hace y que te envie un mail para recuperar tus datos estoy en ello. Espero servirte de ayuda okis. Saludos !!