Está en la página 1de 7

Sencillo/fácil sistema de registro de usuarios en PHP y MySQL con manejo de sesiones

Esta vez quiero mostrarles como hacer para que tu web tenga un sistema de registro para tus usuarios, ya con esto puedes hacer muchas cosas como darles permisos específicos, restringir la entrada de visitantes a algunas partes de tu web, etc.. Cabe aclarar que el script es bastante básico, para quienes empiezan en esto de la programación web. Requerimientos: Hosting (servidor local o web) PHP (ojala 5) 1 base de datos MySQL Empecemos: Para el desarrollo de nuestro script necesitaremos la creación de 4 archivos .php:

   

conexion.php registro.php login.php perfil.php

IMPORTANTE: Tengan cuidado a la hora de copiar y pegar el contenido de los archivos, recuerden no dejar ningún espacio entre el inicio de linea y la expresión "<?php".

1. Lo primero es crear una base de datos a la cual vamos a poner nombre "registro". En la cual vamos a generar la siguiente consulta SQL: Código:
CREATE TABLE usuarios ( id int(5) not null auto_increment, fecha int(10) not null, nick varchar(20) not null, pass varchar(32) not null, mail varchar(40) not null, ip varchar(15) not null, primary key (id), key (nick,pass) )

")>= 1) {//obtengo la terminacion del dominio $term_dom = substr(strrchr ($email. //compruebo unas cosas primeras if ((strlen($email) >= 6) && (substr_count($email."\"")) && (!strstr($email. Luego empezaremos con la creación de nuestro primer archivo "conexion. mysql_select_db($nombre_db[4]) or exit('No existe la base de datos."@")) ) {//compruebo que lo de antes del dominio sea correcto trim($var)."."'")) && (!strstr($email.$password[3]) or exit('Datos de conexion incorrectos. //Contraseña de la base de datos $nombre_db[4] = 'registro'.'). $var. /*En este archivo también pondremos unas funciones necesarias para el registro y el login*/ session_start(). en la cual almacenaremos los datos de nuestros usuarios. if (substr_count($email."\$")) && (!strstr($email. Código: <?php $nombre_server[1] = 'localhost'. $password[3] = ''.1) != "@")) { if ((!strstr($email. $nombre_user[2] = 'root'. //compruebo que la terminaci?n del dominio sea correcta if (strlen($term_dom)>1 && strlen($term_dom)<5 && (!strstr($term_dom. '.$nombre_user[2].Lo que estamos haciendo es crear una tabla en nuestra base de datos llamada "usuarios". //Nombre del usuario de la base de datos.*/ function limpiar($var) { $var = $var = $var = return } /*Función que se encarga de validar el email de registro para que sea correcto. Este archivo también tendrá algunas funciones php necesarias para el registro y el logueo de los usuarios."@") == 1) && (substr($email.*/ function validar_email($email){ $mail_correcto = 0.''.'). //nombre de la base de datos $conectar = @mysql_connect($nombre_server[1].1) != "@") && (substr($email.1).strlen($email)1.')." "))) {//miro si tiene caracter . 2.0. //Servidor al cual nos vamos a conectar. el cual se encarga de conectar nuestro sistema con la base de datos que creamos en el punto anterior. htmlspecialchars($var).$var).php". str_replace(chr(160). . /*Función que se encarga de eliminar codigo malicioso de las variables."\\")) && (!strstr($email.

$nick= limpiar($_POST['nick']). if ($caracter_ult != "@" && $caracter_ult != ". } } ?> 3.back(-1)'>Volver</a>").net-if(isset($_POST['registro']))//Vallidamos que el formulario fue enviado { /*Validamos que todos los campos esten llenos correctamente*/ if(($_POST['nick'] != '') && ($_POST['mail'] != '') && ($_POST['pass'] != '') && ($_POST['conf_pass'] != '')) { if($_POST['pass'] != $_POST['conf_pass']) { echo '<br />Las contrase&ntilde.php"). } } } } } if ($mail_correcto) return 1. $mail= limpiar($_POST['mail']). $pass= md5(md5(limpiar($_POST['pass']))).1). Código: <?php include("conexion. Ya tenemos nuestro archivo de conexión con la base de datos entonces continuamos con el archivo "registro.strlen($email) strlen($term_dom) .0. $caracter_ult = substr($antes_dom.strlen($antes_dom)-1. $b_user= mysql_query("SELECT nick FROM usuarios WHERE nick='$nick'").as no coinciden'. //Sistema de registro --HiperAcme.php" que como su nombre lo indica se encargara de almacenar los usuarios en la base de datos. $ipuser= $_SERVER['REMOTE_ADDR'].$antes_dom = substr($email. <a href='javascript:history. if($user=@mysql_fetch_array($b_user)) . else return 0. } else { $date= time().") { $mail_correcto = 1.1). } /*Funcion que se encarga de validar si el usuario esta registrado en el sistema*/ function user_login() { if(!$_SESSION['id']) { exit ("Solo usuarios registrados.

} } } } else { echo '<br />Deberas llenar todos los campos." tabindex="6" value="Registrar" /> <input type="reset" name="Limpiar" style="width:100px.pass.'. charset=utf8" /> <title>Registro de Usuarios</title> </head> <body> <h2>Sistema de Registro</h2> <div align="center"> <form name="registrar" action="registro.{ echo '<br />El nombre de usuario o el email ya esta registrado.ip) values ('$date'.php" method="post" onsubmit="return validar()" /> <dt><label>Nick:</label></dt> <input type='text' name='nick' /><br /><br /> <dt><label>E-mail:</label></dt> <input type='text' name='mail' /><br /><br /> <dt><label>Contraseña:</label></dt> <input type="password" name='pass' /><br /><br /> <dt><label>Confirmar Contraseña:</label></dt> <input type="password" name='conf_pass' /><br /><br /><br /><br /> <input type="submit" name="registro" style="width:100px. ahora podras iniciar sesi&oacute.'.'$mail'.'.n como usuario registrado.mail.'.'$ipuser')").w3.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html.01 Transitional//EN" "http://www.nick.'$pass'. } } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4. } else { echo '<br />El email no es valido.org/TR/html4/loose." tabindex="6" value="Limpiar" /> </form> <a href="login.php">Identificarse</a> </div> </body> . echo '<br />Te has registrado Correctamente. //liberamos la memoria del query a la db } else { if(validar_email($_POST['mail'])) { mysql_query("INSERT INTO usuarios (fecha. mysql_free_result($b_user).'$nick'.

Este archivos es el encargado de guardar la sesión se los usuarios para que el sistema los reconozca como usuarios registrados y logueados. el "login.'. } else { echo 'Nombre de usuario o Contrase&ntilde. echo '<a href="login.').url=login.H:i". $ses = @mysql_fetch_assoc($b_user) . if(@mysql_num_rows($b_user)) { if($ses['pass'] == $pass) { $_SESSION['id']= $ses["id"]. $_SESSION['mail']= $ses["mail"]. '<br />'.php". $_SESSION['nick'] . $_SESSION['mail'] . $_SESSION['fecha']= $ses["fecha"]. $_SESSION['nick']= $ses["nick"]. if(isset($_POST['login'])) { $nick= $_POST['nick']. echo '<meta http-equiv="Refresh" content="2. $b_user=mysql_query("SELECT * FROM usuarios WHERE nick='$nick'").php"> '. '<br />'. '<br /><br />'. echo '<b>IP:</b> ' . $_SESSION['fecha']) .a incorrecta. $pass= md5(md5($_POST['pass'])).'.a incorrecta. date("d-m-Y . echo '<b>Fecha registro:</b> ' . } if(isset($_SESSION['id'])) { echo 'Bienvenido <b>' . 4.php?modo=desconectar">Salir</a>'. '</b><br /><br />'. $_SESSION['ip'] . } } if(isset($_GET['modo']) == 'desconectar') { session_destroy(). exit ('Te has desconectado del sistema. Ahora procedemos a crear el archivo de conexión de los usuarios . } else . } } else { echo 'Nombre de Usuario o contrase&ntilde.</html> Hasta aquí nuestro sistema de registro ya funciona y va perfectamente. Código: <?php include("conexion.php"). $_SESSION['ip']= $ses["ip"]. echo '<b>Email:</b> ' .

" tabindex="6" value="Limpiar" /> </form> <a href="registro.  Terminar la sesión de usuario [Desconectarse]. sino que también se cumplen dos funciones mas:  Mostrar algunas opciones del perfil del usuario luego de verificar que esta logueado. echo '<b>Nombre de Usuario:</b> ' .php").dtd"> <html> <head> <meta http-equiv="content-type" content="text/html.01 Transitional//EN" "http://www.org/TR/html4/loose. $_SESSION['nick'] . '<br />'.{ ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4. ya tienes todo el registro el logueo de usuarios totalmente funcional.php" method="post" /> <dt><label>Nick:</label></dt> <input type='text' name='nick' /><br /><br /> <dt><label>Contraseña:</label></dt> <input type="password" name='pass' /><br /><br /> <input type="submit" name="login" style="width:100px. echo '<h2>Pagina solo para usuarios registrados</h2><br />'.php">Registrarse</a> </div> <?php } ?> </body> </html> Aquí no solo tenemos el encargado de iniciar la sesión de los usuarios. user_login(). El ultimo de nuestros archivos.w3. en este caso crearemos el archivo "perfil. .Desconectarse</h2> <div align="center"> <form name="login_user" action="login. 5. simplemente es un archivo de ejemplo para mostrar como proteger nuestra paginas de invitados que solo sena accesibles para usuarios registrados. Hasta este momento. charset=utf8" /> <title>Login</title> </head> <body> <h2>Conetarse . Código: <?php include("conexion. así que hasta aquí ya tienes tenemos completo nuestro sistema de información." tabindex="6" value="Entrar" /> <input type="reset" name="Limpiar" style="width:100px.php". Que podrán verlas funcionando a la hora de implementar el código o en el ejemplo funcional que dejare al final.

Al principio luego de incluir el archivo de conexión. ?> La función user_login() (que pueden encontrar en el archivo conexion. $_SESSION['mail'] . echo '<b>IP:</b> ' . $_SESSION['fecha']) . de lo contrario le mostrara un aviso diciéndole que no lo esta y no le dejara ver el contenido de la pagina que esta visitando. echo '<a href="login.echo '<b>Fecha de registro:</b> ' . '<br />'. '<br />'. Así que las paginas que quieran proteger deberán agregarle la linea: Código: user_login(). . date("d-m-Y . '<br /><br />'.php) es la encargada de verificar que el usuario este logueado.H:i".php?modo=desconectar">Salir</a>'. echo '<b>Email de registro:</b> ' . $_SESSION['ip'] .