dominios y alojamiento web en hostalia

tutorial registro de usuarios con validacion via e-mail con flash-php-mysql

Wiki: Los usuarios registrados de DesarrolloWeb.com pueden modificar los contenidos y realizar aportaciones en esta sección.
  • Editar descripción
  • Crear subtitular
  • Crear subentrada
  • Crea una discusión
  • Envia un enlace
  • Envia una imagen
TUTORIAL DE CREACION DE UN REGISTRO DE USUARIOS CON VALIDACION VIA E-MAIL
UTILIZANDO FLASH, PHP, MySQL



CREADO POR: JOSÉ ALEXIS TRUJILLO . caracas-venezuela
Descripción por: joseeatg

creacion de registro de usuarios en flash,php,mysql

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 ?ers?(sin las comillas). Aquí el script de la base de datos:
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: 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("<","<",$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){
$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']."&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']?>

continuo en el proximo tema....... continuara....... parte II - continuacion 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 ?piar?in 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:
//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
Por: joseeatg
Entradas relacionadas con tutorial registro de usuarios con validacion via e-mail con flash-php-mysql
Entradas clasificadas por las etiquetas:
No se han creado entradas hijas ni asociadas.

Puedes crear una entrada que consideres debería estar dentro de tutorial registro de usuarios con validacion via e-mail con flash-php-mysql.


Últimas discusiones
Las discusiones permiten hablar de asuntos relacionados con esta entrada de wiki, para crear un hilo de comentarios como en los foros de discusión.
Aun no hay discusiones sobre tutorial registro de usuarios con validacion via e-mail con flash-php-mysql.

Moderadores
Etiquetas
  • Aplicación Online
  • Script Flash
  • Bases de datos
  • Códigos PHP
  • Página Web
Árbol de la Wiki
Portada de Wiki
Licencia de la Wiki
Esta obra está bajo una licencia de Creative Commons
Donaciones
Si piensas que te hemos ayudado y merecemos tu apoyo económico...