PixelUpload

SistemaDeRegistro

Crear Sistema de Registro de Usuarios:

Este código/tutorial te permite crear tu propio sistema de registros de usuarios. Para ello no te servirá utilizar un sitio de PWG (aunque puedes insertar el registro una vez terminado en tu sitio de pwg siguiendo el tutorial que será dejado al final de la págna), ya que necesitas una web que permita el uso de PHP.

Lo primero que necesitamos hacer es crear en la base de datos la tabla que contendrá los datos de cada uno de los usuarios registrados en la web, para ello utilizaremos el siguiente código SQL:
CREATE TABLE `usuarios` ( 
    `usuario_id` int(4) NOT NULL AUTO_INCREMENT, 
    `usuario_nombre` varchar(15) NOT NULL DEFAULT '', 
    `usuario_clave` varchar(32) NOT NULL DEFAULT '', 
    `usuario_email` varchar(50) NOT NULL DEFAULT '', 
    `usuario_freg` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', 
    PRIMARY KEY (`usuario_id`) 
)
Conexión a la Base de Datos:

Una vez configurada la base de datos (bd) procederemos a crear el archivo que nos permitirá conectarnos a ella, este archivo lo llamaremos acceso_db.php (recuerda poner los datos de tu bd en los espacios de color naranja):
<?php 
 
    $host_db = "host de la bd";
    $usuario_db = "usuario de la bd";
    $clave_db = "contraseña de la bd";
    $nombre_db = "nombre de la bd";
     
// Creamos la función que nos conectará a la base de datos.
 
    mysql_connect($host_db, $usuario_db, $clave_db); 
    mysql_select_db($nombre_db); 
 
?>
Formulario de Registro:

Ahora procederemos a crear el formulario que le permitirá al usuario registrarse en nuestro sitio web, este archivo lo llamaremos registro.php (puedes modificar todos los espacios en naranja):
<?php 

// Incluímos el archivo que nos permitirá conectar a la base de datos


    include('acceso_db.php');

// Comprobamos que se han enviado los datos desde el formulario de registro

    if(isset($_POST['enviar'])) { 

// Creamos una función que nos parmita incluir cualquier símbolo en el campo mail 

        function valida_email($correo) { 
            if (preg_match('/^[A-Za-z0-9-_.+%]+@[A-Za-z0-9-.]+\.[A-Za-z]{2,4}$/', $correo)) return true; 
            else return false; 
        } 

// Procedemos a comprobar que los campos del formulario no estén en blanco

        $sin_espacios = count_chars($_POST['usuario_nombre'], 1); 
        if(!empty($sin_espacios[32])) {

// Comprobamos que el campo usuario_nombre no tenga espacios 

            echo "El campo <em>usuario_nombre</em> no debe contener espacios en blanco. <a href='javascript:history.back();'>Reintentar</a>"; 

// Comprobamos que el campo usuario_nombre no esté vacío


        }elseif(empty($_POST['usuario_nombre'])) { 
            echo "No has ingresado tu usuario. <a href='javascript:history.back();'>Reintentar</a>"; 

// Comprobamos que el campo usuario_clave no esté vacío 

        }elseif(empty($_POST['usuario_clave'])) { 
            echo "No has ingresado contraseña. <a href='javascript:history.back();'>Reintentar</a>"; 

// Comprobamos que las contraseñas ingresadas coincidan 

        }elseif($_POST['usuario_clave'] != $_POST['usuario_clave_conf']) { 
            echo "Las contraseñas ingresadas no coinciden. <a href='javascript:history.back();'>Reintentar</a>"; 

// Comprobamos que el mail ingresado sea válido

        }elseif(!valida_email($_POST['usuario_email'])) {  
            echo "El email ingresado no es válido. <a href='javascript:history.back();'>Reintentar</a>"; 
        }else { 

// Quitamos los posibles códigos maliciosos a los campos 

            $usuario_nombre = mysql_real_escape_string($_POST['usuario_nombre']); 
            $usuario_clave = mysql_real_escape_string($_POST['usuario_clave']); 
            $usuario_email = mysql_real_escape_string($_POST['usuario_email']); 

// Comprobamos que el usuario ingresado no haya sido registrado antes 

            $sql = mysql_query("SELECT usuario_nombre FROM usuarios WHERE usuario_nombre='".$usuario_nombre."'"); 
            if(mysql_num_rows($sql) > 0) { 
                echo "El nombre usuario elegido ya ha sido registrado anteriormente. <a href='javascript:history.back();'>Reintentar</a>"; 

            }else { 

// Encriptamos la contraseña ingresada con md5

                $usuario_clave = md5($usuario_clave);  

// Colocamos los datos dentro de la base de datos 

                $reg = mysql_query("INSERT INTO usuarios (usuario_nombre, usuario_clave, usuario_email, usuario_freg) VALUES ('".$usuario_nombre."', '".$usuario_clave."', '".$usuario_email."', NOW())"); 
                if($reg) { 
                    echo "Datos ingresados correctamente."; 
                }else { 
                    echo "Ha ocurrido un error y no se registraron los datos."; 

                } 
            } 
        } 
    }else { 

?> 

// Procedemos a crear el formulario de registro (BORRA ESTA LÍNEA) 

    <form action="<?=$_SERVER['PHP_SELF']?>" method="post"> 
        <label>Usuario:</label><br /> 
        <input type="text" name="usuario_nombre" maxlength="15" /><br /> 
        <label>Contraseña:</label><br /> 
        <input type="password" name="usuario_clave" maxlength="15" /><br /> 
        <label>Confirmar Contraseña:</label><br /> 
        <input type="password" name="usuario_clave_conf" maxlength="15" /><br /> 
        <label>Email:</label><br /> 
        <input type="text" name="usuario_email" maxlength="50" /><br /> 
        <input type="submit" name="enviar" value="Registrar" /> 
        <input type="reset" value="Borrar" /> 
    </form> 

<?php 
   
?>
Página de Inicio de Sesión:

A continuación procederemos a crear nuestra página de inicio de sesión, es decir, nuestro login. Este arhivo lo llamaremos acceso.php (puedes modificar todos los espacios en naranja):
<?php 

// Conectamos a la BD y comprobamos que no se haya iniciado sesión anteriormente para poder iniciar nuestra sesión

    session_start(); 
    include('acceso_db.php'); 
    if(empty($_SESSION['usuario_nombre'])) {          
?> 

// Creamos el formulario de inicio de sesión, el cual será validado mediante el archivo "comprobar.php" que crearemos en el siguiente paso (BORRA ESTA LÍNEA)

        <form action="comprobar.php" method="post"> 
            <label>Usuario:</label><br /> 
            <input type="text" name="usuario_nombre" /><br /> 
            <label>Contraseña:</label><br /> 
            <input type="password" name="usuario_clave" /><br /> 
            <input type="submit" name="enviar" value="Ingresar" /> 
        </form>  
                  
<?php 
    }else { 
?> 

// Colocamos un mensaje de bienvenida al iniciar sesión (BORRA ESTA LÍNEA)

        <p>Hola <strong><?=$_SESSION['usuario_nombre']?></strong> | <a href="logout.php">Salir</a></p> 

<?php 
    } 
?>
Ahora crearemos el archivo que validará los datos ingresados en el login creado anteriormente. Este archivo lo denominaremos comprobar.php (puedes modificar todos los espacios en naranja):
<?php 
    session_start(); 
    include('acceso_db.php'); 

// Comprobamos que se hayan enviado los datos del formulario 

    if(isset($_POST['enviar'])) { 

// Comprobamos que los campos usuarios_nombre y usuario_clave no estén vacíos 

        if(empty($_POST['usuario_nombre']) || empty($_POST['usuario_clave'])) { 
            echo "El usuario o la contraseña no han sido ingresados. <a href='javascript:history.back();'>Reintentar</a>"; 
        }else { 

// Limpiamos los campos del formulario de posibles códigos maliciosos 

            $usuario_nombre = mysql_real_escape_string($_POST['usuario_nombre']); 
            $usuario_clave = mysql_real_escape_string($_POST['usuario_clave']); 
            $usuario_clave = md5($usuario_clave); 

// Comprobamos que los datos ingresados en el formulario coincidan con los de la BD y, si estos coinciden, iniciamos la sesión

            $sql = mysql_query("SELECT usuario_id, usuario_nombre, usuario_clave FROM usuarios WHERE usuario_nombre='".$usuario_nombre."' AND usuario_clave='".$usuario_clave."'"); 
            if($row = mysql_fetch_array($sql)) { 
                $_SESSION['usuario_id'] = $row['usuario_id']; 
                $_SESSION['usuario_nombre'] = $row["usuario_nombre"]; 
                header("Location: acceso.php"); 
            }else { 
?> 

// Colocamos un mensaje de error en caso de que no se pueda iniciar la sesión (BORRA ESTA LÍNEA) 

                Error, <a href="acceso.php">Reintentar</a> 

<?php

// Si la sesión se inicia correctamente, volvemos a la página del login para mostrar el mensaje de bienvenida 
 
            } 
        } 
    }else { 
        header("Location: acceso.php"); 
    } 
?>
Página de cierre de sesión:

Si se puede iniciar sesión lógicamente también es necesaria una página para cerrar la sesión, para ello crearemos el archivo logout.php (puedes modificar todos los espacios en naranja):
<?php 
    session_start(); 

// Incluímos los datos de acceso a la BD 

    include('acceso_db.php'); 

// Comprobamos que se haya iniciado la sesión y creamos la función para cerrar la sesión 

    if(isset($_SESSION['usuario_nombre'])) { 
        session_destroy(); 
        header("Location: index.php"); 
    }else { 
        echo "Operación incorrecta."; 
    } 

?>
Páginas accesibles sólo a usuarios conectados:

Si has creado un sistema de registro es porque quieres restringir el contenido de tu sitio web. Para ello colocaras el siguiente código en cada una de las páginas (con extensión .php) que quieras que sólo puedan visualizar usuarios registrados (puedes modificar todos los espacios en naranja):
<?php 

// Incluímos los datos de acceso a la BD 
   
    session_start(); 
    include('acceso_db.php'); 

// Comprobamos que se haya iniciado la sesión 

    if(isset($_SESSION['usuario_nombre'])) { 

?> 

        <!-- Aquí ponemos todo el código HTML de nuestra página restringida, desde <html> a </html>--> 

<?php 

// Si no se está registrado, en lugar del contenido se muestra un mensaje de error

    }else { 
        echo "Estás accediendo a una página restringida, para ver su contenido debes estar registrado.<br /> 
        <a href='acceso.php'>Ingresar</a> / <a href='registro.php'>Regitrarme</a>"; 
    } 

?>

Con todo esto ya está terminado tu sistema de registro de usuarios. Ahora bien, si quieres puedes agregar páginas opcionales como la recuperación de contraseña, el cambio de contraseña o la página de perfil.
 


>> Recuperación de contraseña:

Hay veces que el usuario olvida su contraseña y por ende viene muy bien colocar una página para recuperarla. Este archivo lo llamaremos recuperar_contrasena.php (puedes modificar todos los espacios en naranja):
<?php 

    include('acceso_db.php'); // incluímos los datos de acceso a la BD 
    if(isset($_POST['enviar'])) { // comprobamos que se han enviado los datos del formulario 
        if(empty($_POST['usuario_nombre'])) { 
            echo "No ha ingresado el usuario. <a href='javascript:history.back();'>Reintentar</a>"; 
        }else { 
            $usuario_nombre = mysql_real_escape_string($_POST['usuario_nombre']); 
            $usuario_nombre = trim($usuario_nombre); 
            $sql = mysql_query("SELECT usuario_nombre, usuario_clave, usuario_email FROM usuarios WHERE usuario_nombre='".$usuario_nombre."'"); 
            if(mysql_num_rows($sql)) { 
                $row = mysql_fetch_assoc($sql); 
                $num_caracteres = "10"; // asignamos el número de caracteres que va a tener la nueva contraseña 
                $nueva_clave = substr(md5(rand()),0,$num_caracteres); // generamos una nueva contraseña de forma aleatoria 
                $usuario_nombre = $row['usuario_nombre']; 
                $usuario_clave = $nueva_clave; // la nueva contraseña que se enviará por correo al usuario 
                $usuario_clave2 = md5($usuario_clave); // encriptamos la nueva contraseña para guardarla en la BD 
                $usuario_email = $row['usuario_email']; 
                // actualizamos los datos (contraseña) del usuario que solicitó su contraseña 
                mysql_query("UPDATE usuarios SET usuario_clave='".$usuario_clave2."' WHERE usuario_nombre='".$usuario_nombre."'"); 

                // Enviamos por email la nueva contraseña 

                $remite_nombre = "Nombre de tu web";  
                $remite_email = "Tu Mail";  
                $asunto = "Asunto (Recuperación de contraseña por ejemplo)"; 
                $mensaje = "Se ha generado una nueva contraseña para el usuario <strong>".$usuario_nombre."</strong>. La nueva contraseña es: <strong>".$usuario_clave."</strong>."; 
                $cabeceras = "From: ".$remite_nombre." <".$remite_email.">\r\n"; 
                $cabeceras = $cabeceras."Mime-Version: 1.0\n"; 
                $cabeceras = $cabeceras."Content-Type: text/html"; 
                $enviar_email = mail($usuario_email,$asunto,$mensaje,$cabeceras); 
                if($enviar_email) { 
                    echo "La nueva contraseña ha sido enviada al email asociado al usuario ".$usuario_nombre."."; 
                }else { 
                    echo "No se ha podido enviar el email. <a href='javascript:history.back();'>Reintentar</a>"; 
                } 
            }else { 
                echo "El usuario <strong>".$usuario_nombre."</strong> no está registrado. <a href='javascript:history.back();'>Reintentar</a>"; 
            } 
        } 
    }else { 
?> 

    <form action="<?=$_SERVER['PHP_SELF']?>" method="post"> 
        <label>Usuario:</label><br /> 
        <input type="text" name="usuario_nombre" /><br /> 
        <input type="submit" name="enviar" value="Enviar" /> 
    </form> 

<?php 

    } 

?>
>> Cambiar contraseña:

Por motivos de seguridad a los usuarios les conviene cambiar su contraseña a menudo. Por ende crearemos el archivo cambiar_contrasena.php para darle la facilidad al usuario de modificar su clave (puedes modificar todos los espacios en naranja):
<?php 
    session_start(); 
    include('acceso_db.php'); // incluímos los datos de conexión a la BD 
    if(isset($_SESSION['usuario_nombre'])) { // comprobamos que la sesión esté iniciada 
        if(isset($_POST['enviar'])) { 
            if($_POST['usuario_clave'] != $_POST['usuario_clave_conf']) { 
                echo "Las contraseñas ingresadas no coinciden. <a href='javascript:history.back();'>Reintentar</a>"; 
            }else { 
                $usuario_nombre = $_SESSION['usuario_nombre']; 
                $usuario_clave = mysql_real_escape_string($_POST["usuario_clave"]); 
                $usuario_clave = md5($usuario_clave); // encriptamos la nueva contraseña con md5 
                $sql = mysql_query("UPDATE usuarios SET usuario_clave='".$usuario_clave."' WHERE usuario_nombre='".$usuario_nombre."'"); 
                if($sql) { 
                    echo "Contraseña cambiada correctamente."; 
                }else { 
                    echo "Error: No se pudo cambiar la contraseña. <a href='javascript:history.back();'>Reintentar</a>"; 
                } 
            } 
        }else { 
?> 
        <form action="<?=$_SERVER['PHP_SELF']?>" method="post"> 
            <label>Nueva contraseña:</label><br /> 
            <input type="password" name="usuario_clave" maxlength="15" /><br /> 
            <label>Confirmar:</label><br /> 
            <input type="password" name="usuario_clave_conf" maxlength="15" /><br /> 
            <input type="submit" name="enviar" value="Enviar" /> 
        </form> 
<?php 
        } 
    }else { 
        echo "Acceso denegado.";  // en caso que no se haya iniciado sesión anteriormente
    } 
?>
>> Perfil:

En esta página el usuario podrá ver los datos básicos de su cuenta, es decir: nombre de usuario, email y fecha de registro. Este archivo lo llamaremos perfil.php (puedes modificar todos los espacios en naranja):
<?php 
    session_start(); 
    include('acceso_db.php'); 
    $perfil = mysql_query("SELECT * FROM usuarios WHERE usuario_id='".$_GET['id']."'") or die(mysql_error()); 
    if(mysql_num_rows($perfil)) { // Comprobamos que exista el registro con la ID ingresada 
        $row = mysql_fetch_array($perfil); 
        $id = $row["usuario_id"]; 
        $nick = $row["usuario_nombre"]; 
        $email = $row["usuario_email"]; 
        $freg = $row["usuario_freg"]; 
?> 
        <strong>Nick:</strong> <?=$nick?><br /> 
        <strong>Email:</strong> <?=$email?><br /> 
        <strong>Registrado el:</strong> <?=$freg?><br /> 
        <strong>URL del perfil:</strong> <a href="perfil.php?id=<?=$id?>">Click aquí</a> 
<?php 
    }else { 
?> 
        <p>El perfil seleccionado no existe o ha sido eliminado.</p> 
<?php 
    } 
?>
Eso ha sido todo, en caso de tener alguna duda por favor contáctanos a: http://pixelupload.es.tl/Contacto.htm o bien visita la web fuente: http://www.celulaweb.net/.../


Para insertar tu registro en tu página de PWG continúa con el siguiente tutorial: 
http://pixelup.wc.lt/codigos/sistema-de-registro-pwg.html




PixelUpload ha CERRADO. Lo sentimos! :(
Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis