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
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: [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']."&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