Comunidad de diseño web y desarrollo en internet

Tutorial registro con activacion via e-mail en flash,php,mysql

Citar            
MensajeEscrito el 11 Jun 2011 10:06 pm
TUTORIAL DE CREACION DE UN REGISTRO DE USUARIOS CON VALIDACION VIA E-MAIL
UTILIZANDO FLASH, PHP, MySQL



CREADO POR: JOSÉ ALEXIS TRUJILLO . caracas-venezuela



Hola a todos, he decidido crear este pequeño tutorial para todas aquellas personas que les gustaria crear registro de usuarios con validación u activacion via e-mail, utilizando actionscript, flash, php, MySQL, para ellos aquí va el tutorial.

1.-PRIMERO

Crearemos nuestra base de datos yo para este caso la llamare “users”, (sin las comillas).
Aquí el script de la base de datos:


Código :

CREATE TABLE `users` (
  `ID` int(11) NOT NULL auto_increment,
  `Username` varchar(255) NOT NULL,
  `Password` varchar(255) NOT NULL,
  `Temp_pass` varchar(55) default NULL,
  `Temp_pass_active` tinyint(1) NOT NULL default '0',
  `Email` varchar(255) NOT NULL,
  `Active` int(11) NOT NULL default '0',
  `Level_access` int(11) NOT NULL default '2',
  `Random_key` varchar(32) default NULL,
  PRIMARY KEY  (`ID`),
  UNIQUE KEY `Username` (`Username`),
  UNIQUE KEY `Email` (`Email`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=26 ;



2.-SEGUNDO





Despues de habre creado nuestra tabla crearemos 5 archivos php los cuales llamaremos de la siguiente manera:


Código :

Register.php

<?

$username =$_POST['username'];
$password =$_POST['password'];
$password_confirmed =$_POST['password_confirmed'];
$email = $_POST['email'];
$action = $_POST['register'];



require_once('db.php');
include('functions.php');





function quitar($mensaje) //elimina símbolos indeseados
{
$mensaje = str_replace("<","&lt;",$mensaje);
$mensaje = str_replace(">","&gt;",$mensaje);
$mensaje = str_replace("\'","'",$mensaje);
$mensaje = str_replace('\"',"&quot;",$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){
$email_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 != "."){
$email_correcto = 1;
}}}}}
if ($email_correcto)
return 1; //mail correcto
else
return 0; //mail incorrecto
}
$comp_email = quitar($_POST["email"]);
$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($_POST["username"])."'";
$result = mysql_query($sql);
if($row = mysql_fetch_array($result))
{
echo "&estatus=ocupado&"; //nick ocupado
}


{
if($_POST['username']!='' && $_POST['password']!='' && $_POST['password']==$_POST['password_confirmed'] && $_POST['email']!='' && valid_email($_POST['email'])==TRUE && checkUnique('Username', $_POST['username'])==TRUE && checkUnique('Email', $_POST['email'])==TRUE)


         $query = mysql_query("INSERT INTO users (`Username` , `Password`, `Email`, `Random_key`) VALUES ('".mysql_real_escape_string($_POST['username'])."', '".mysql_real_escape_string(md5($_POST['password']))."', '".mysql_real_escape_string($_POST['email'])."', '".random_string('alnum', 32)."')") or die(mysql_error());

         $getUser = mysql_query("SELECT ID, Username, Email, Random_key FROM users WHERE Username = '".mysql_real_escape_string($_POST['username'])."'") or die(mysql_error());

         if(mysql_num_rows($getUser)==1)
         {

            $row = mysql_fetch_assoc($getUser);
                $headers = 'From: www.josealexis.tk@mydominio.com' . "\r\n" .
                'Reply-To: www.josealexis.tk@mydominio.com' . "\r\n" .
                'X-Mailer: PHP/' . phpversion();
                 $subject = "Activation de registro de usuarios www.josealexis.com";
                 $message = "hola ".$row['Username'].", éste es su eslabón de activación para unir nuestro website. Para por favor confirmar su número de miembros haga clic en lo siguiente eslabón : http://www.josealexis.tk/confirm.php?ID=".$row['ID']."&amp;key=".$row['Random_key']. " gracias por registrarse";
                 if(mail($row['Email'], $subject, $message, $headers))
            {//we show the good guy only in one case and the bad one for the rest.
               $msg = 'Registro creado. Por favor haga click en el enlace que le hemos enviado a su dirrecion de correo electronico para activar su cuenta.';
                 echo "&estatus=ok&"; //registro exitoso






            }
            else {
               $error = 'La cuenta esta creada pero falta que usted active la misma en en link que le hemos enviado a su direccion de e-mail';

            }
         }
         else {
            $error = 'se ha terminado su tiempo de velides para activar su cuenta. Por favor registrese nuevamente .';

         }

      }
 }

echo ("&error=".$error);
echo ("&msg=" . $msg);
?>
<?=$_SERVER['PHP_SELF']?>





Confirm.php

<?php
require_once('db.php');
include('functions.php');

   if($_GET['ID']!='' && numeric($_GET['ID'])==TRUE && strlen($_GET['key'])==32 && alpha_numeric($_GET['key'])==TRUE)
   {

      $query = mysql_query("SELECT ID, Random_key, Active FROM users WHERE ID = '".mysql_real_escape_string($_GET['ID'])."'");

      if(mysql_num_rows($query)==1)
      {
         $row = mysql_fetch_assoc($query);
         if($row['Active']==1)
         {
            echo "&error=".$error = 'This member is already active !';
         }
         elseif($row['Random_key']!=$_GET['key'])
         {
            echo "&error=".$error = 'The confirmation key that was generated for this member does not match with the one entered !';
         }
         else
         {
            $update = mysql_query("UPDATE users SET Active=1 WHERE ID='".mysql_real_escape_string($row['ID'])."'") or die(mysql_error());
            $msg = 'Congratulations !  You just confirmed your membership !';
         }
      }
      else {

         echo "&error=".$error = 'User not found !';

      }

   }
   else {

      $error = 'Invalid data provided !';

   }

   if(isset($error))
   {
      echo "&error=".$error;
   }
   else {
      echo "&msg=".$msg;
   }
?>




confirm_password.php

<?php
require_once('db.php');
include('functions.php');

   $query = mysql_query("SELECT * FROM users WHERE ID = '".mysql_real_escape_string($_GET['ID'])."'");

   if(mysql_num_rows($query)==1)
   {
      $row = mysql_fetch_assoc($query);
      if($row['Temp_pass']==$_GET['new'] && $row['Temp_pass_active']==1)
      {
         $update = mysql_query("UPDATE users SET Pass = '".md5(mysql_real_escape_string($_GET['new']))."', Temp_pass_active=0 WHERE ID = '".mysql_real_escape_string($_GET['ID'])."'");
         $msg = 'Your new password has been confirmed. You may login using it.';
      }
      else
      {
         $error = 'The new password is already confirmed or is incorrect';
      }
   }
   else {
      $error = 'You are trying to confirm a new password for an unexisting member';
   }

   if(isset($error))
   {
      echo $error;
   }
   else {
      echo $msg;
   }
?>




Db.php


<?php

$hostname = "localhost";
$database = "users";
$username = "tu_user";
$password = "tu_pass";

$login = mysql_connect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_select_db($database);
?>


Functions.php

<?php
   function checkLogin($levels)
   {
      if(!$_SESSION['logged_in'])
      {
         $access = FALSE;
      }
      else {
         $kt = split(' ', $levels);

         $query = mysql_query('SELECT Level_access FROM users WHERE ID = "'.mysql_real_escape_string($_SESSION['user_id']).'"');
         $row = mysql_fetch_assoc($query);

         $access = FALSE;

         while(list($key,$val)=each($kt))
         {
            if($val==$row['Level_access'])
            {//if the user level matches one of the allowed levels
               $access = TRUE;
            }
         }
      }
      if($access==FALSE)
      {
         header("Location: login.php");
      }
      else {
      //do nothing: continue
      }

   }

   function valid_email($str)
   {
      return ( ! preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $str)) ? FALSE : TRUE;
   }

   function checkUnique($field, $compared)
   {
      $query = mysql_query("SELECT `".mysql_real_escape_string($field)."` FROM `users` WHERE `".mysql_real_escape_string($field)."` = '".mysql_real_escape_string($compared)."'");
      if(mysql_num_rows($query)==0)
      {
         return TRUE;
      }
      else {
         return FALSE;
      }
   }

   function numeric($str)
   {
      return ( ! ereg("^[0-9\.]+$", $str)) ? FALSE : TRUE;
   }

   function alpha_numeric($str)
   {
      return ( ! preg_match("/^([-a-z0-9])+$/i", $str)) ? FALSE : TRUE;
   }

   function random_string($type = 'alnum', $len = 8)
   {
      switch($type)
      {
         case 'alnum'   :
         case 'numeric'   :
         case 'nozero'   :

               switch ($type)
               {
                  case 'alnum'   :   $pool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
                     break;
                  case 'numeric'   :   $pool = '0123456789';
                     break;
                  case 'nozero'   :   $pool = '123456789';
                     break;
               }

               $str = '';
               for ($i=0; $i < $len; $i++)
               {
                  $str .= substr($pool, mt_rand(0, strlen($pool) -1), 1);
               }
               return $str;
           break;
         case 'unique' : return md5(uniqid(mt_rand()));
           break;
      }
   }
?>




Ok hasta aquí terminamos con los .php, ahora vamos por el .fla


1._ crearemos un nuevo documento de flash as2.0

1) Abre tu macromedia flash y crea un nuevo archivo llamado index.fla. Créate un fondo q te guste (Ten
en cuenta que vamos a tener 5 campos, así que dibújate 5 rectángulos). A esta primera capa la llamaremos
mismamente "fondo".






2) Crear una nueva capa llamada "campos" e insertar encima de los rectángulos que creamos, 5 campos
de texto de tipo "Input text" y ponerles los siguientes nombres de instancia. username (para el nombre de
usuario). password (para la contraseña). password_confirmed (para repetir la contraseña) email (para la direc. de e-mail).
copiar2( para el captcha).

Create otro campo de tipo dinamic_text y colocale como nombre de instancia “copiar” sin las comillas.


Todos estos campos estarán definidos como tipo de texto "single line" (línea única) salvo el campo
pass q se definirá como texto tipo "password" (contraseña). Todas estas opciones las tenéis en
propiedades.



3) A continuación crear una nueva capa llamada "alertas", en ella insertaremos todos los movie clips (si
queréis hacerlo mas sencillo, podéis insertar un simple mensaje y listo, sin mc)

4) Crearos una capa llamada "botón" e insertar en ella un botón con nombre " register" y debajo de este
insertar una caja de texto de tipo dynamic text y llamarla "proces"

Por ultimo el mensaje de registro exitoso lo manejaríamos en el keyframe 35. Poner el mensaje de
error en el keyframe correspondiente y listo.

Bueno decir que este paso os lo podéis saltar, no es imprescindible, lo he creado para dar un efecto mas
chulo. Sirve para que una vez nos hayamos registrado nos salgan los datos con los que nos hemos
registrado. Para los que queráis insertarlo, crearos una capa llamada " exito" , insertamos un
keyframe en el frame 35 y en un hueco reservado insertamos 2 campos de texto de tipo "dynamic text" con
los nombres de instancia: username2, email2,





6) Bueno ya tenemos toda la parte física, ahora vamos a por el código. Nos vamos a la capa llamada
" exito". Pinchar en el primer frame y pegar el código:


Código :

//Creamos la funcion que creara el numero aleatorio del captcha
captcha = 6+Math.floor(Math.random()*78.9);
captcha = captcha*100.4+1;
captcha = Math.floor(captcha);
this.copiar.text = captcha++;
//creamos la funcion que enviara los datos del formulario a la pagina register.php
enviar = function () {
   if (copiar.text == copiar2.text) {
      if (username.text.length) {
         if (password.text.length) {
            if (password_confirmed.text.length) {
               if (email.text.length) {
                  form1 = new LoadVars();
                  form1.username = username.text;
                  form1.password = password.text;
                  form1.password_confirmed = password_confirmed.text;
                  form1.email = email.text;
                  proces.text = "procesando datos";
                  form1.sendAndLoad("register.php", form1, "POST");
                  form1.onLoad = function() {
                     if (this.estatus == "ocupado") {
                        proces.text = "";
                        username.text = "";
                        gotoAndStop(20);
                     }
                     if (this.estatus == "nomail") {
                        proces.text = "";
                        email.text = "";
                        gotoAndStop(25);
                     }
                     if (this.estatus == "ok") {
                        proces.text = "Registrado con exito!";
                        usernamevar = username.text;
                        passwordvar = password.text;
                        password_confirmedvar = password_confirmed.text;
                        emailvar = email.text;
                        username = "";
                        password = "";
                        password_confirmed = "";
                        email = "";
                        gotoAndPlay(35);
                     }
                  };
               }
            } else {
               gotoAndStop(5);
            }
         } else {
            gotoAndStop(10);
         }
      } else {
         gotoAndStop(15);
         //campo nombre de usuario vacío
      }
   } else {
      gotoAndStop(35);
   }
};
register.onRelease = enviar;
stop();



Atención! si optáis por poner un mensaje sencillo de usuario registrado con éxito tenéis que sustituir
gotoAndPlay(35); por gotoAndStop(35);
7) Nos creamos a la capa llamada "exito" (Solo para los que han seguido el paso 5) e
insertamos en el frame 35 un keyframe y en actions frame insertamos el siguiente código


this.username2.text = usernamevar;
this.email2.text = emailvar;
this.user.text = usernamevar;
proces.text = "Registrado con exito!";
stop()




Importante: en el index.fla, tendremos que insertar una linea de codigo para
evitar que salga el menu al hacer click derecho, ya que de lo contrario el usuario podría dar a la opción
reproducir y saltarse d esta forma todo el sistema de seguridad. Para evitar esto solo teneis que poner la
siguiente linea de codigo:


Stage.showMenu=false;


Eso es todo cualquier duda me la pueden hacer llegar a la direccion de correo www.josealexis.tk@gmail.com


Si te gusto este tutorial valoralos con karma

Atte.jatg “jose Alexis Trujillo gonzalez caracas-venezuela.

Por www.josealexis.tk

5 de clabLevel



Genero:Masculino  

soy ingeniero en sistemas

chrome
Citar            
MensajeEscrito el 11 Jun 2011 10:10 pm
nota: si desean ver el tutorial en video busquen youtube joseeatg en mi canal esta creado el video tutorial

Por www.josealexis.tk

5 de clabLevel



Genero:Masculino  

soy ingeniero en sistemas

chrome
Citar            
MensajeEscrito el 11 Jun 2011 10:44 pm
Buen tuto Hasta donde Lo lei Despues lo Vere Con mas cuidado Buen aporte

Por neor1326

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Jun 2011 06:22 pm
Lo siento mucho Jose Alexis, sólo aprobamos tutoriales que usen Actionscript 3.

Pero paso esto a aportes.

Por Freddie

BOFH

53 tutoriales
595 articulos
43 ejemplos

Genero:Masculino   Admin

Conserje de Cristalab

firefox

   Página 1 de 1

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.