Foros del Web » Creando para Internet » Flash y Actionscript »

Tutorial de creacion de un registro de usuarios con validacion via e-mail utilizando

Estas en el tema de Tutorial de creacion de un registro de usuarios con validacion via e-mail utilizando en el foro de Flash y Actionscript en Foros del Web. TUTORIAL DE CREACION DE UN REGISTRO DE USUARIOS CON VALIDACION VIA E-MAIL UTILIZANDO FLASH, PHP, MySQL CREADO POR: JOSÉ ALEXIS TRUJILLO . Hola a todos, ...
  #1 (permalink)  
Antiguo 10/06/2011, 23:53
Avatar de jatg  
Fecha de Ingreso: abril-2011
Ubicación: caracas
Mensajes: 152
Antigüedad: 13 años, 7 meses
Puntos: 15
Tutorial de creacion de un registro de usuarios con validacion via e-mail utilizando

TUTORIAL DE CREACION DE UN REGISTRO DE USUARIOS CON VALIDACION VIA E-MAIL
UTILIZANDO FLASH, PHP, MySQL

CREADO POR: JOSÉ ALEXIS TRUJILLO .





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 MySQL:
Ver original
  1. CREATE TABLE `users` (
  2.   `ID` int(11) NOT NULL auto_increment,
  3.   `Username` varchar(255) NOT NULL,
  4.   `Password` varchar(255) NOT NULL,
  5.   `Temp_pass` varchar(55) default NULL,
  6.   `Temp_pass_active` tinyint(1) NOT NULL default '0',
  7.   `Email` varchar(255) NOT NULL,
  8.   `Active` int(11) NOT NULL default '0',
  9.   `Level_access` int(11) NOT NULL default '2',
  10.   `Random_key` varchar(32) default NULL,
  11.   PRIMARY KEY  (`ID`),
  12.   UNIQUE KEY `Username` (`Username`),
  13.   UNIQUE KEY `Email` (`Email`)
  14. ) 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("<","&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: [email protected]' . "\r\n" .
'Reply-To: [email protected]' . "\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 = "tser";
$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 = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLM NOPQRSTUVWXYZ';
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;
}
}
?> continua a la parte 2 del tutorial
__________________
www.josealexis.net

Etiquetas: e-mail, registro, usuarios, tutoriales
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 15:48.