Anda di halaman 1dari 7

Sencillo/fcil sistema de registro de usuarios en PHP y MySQL con manejo de sesion es Esta vez quiero mostrarles como hacer

para que tu web tenga un sistema de regist ro para tus usuarios, ya con esto puedes hacer muchas cosas como darles permisos especficos, restringir l a entrada de visitantes a algunas partes de tu web, etc.. Cabe aclarar que el script es bastante bsico, para quienes empiezan en esto de la programacin web. Requerimientos: Hosting (servidor local o web) PHP (ojala 5) 1 base de datos MySQL Empecemos: Para el desarrollo de nuestro script necesitaremos la creacin 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 archi vos, recuerden no dejar ningn espacio entre el inicio de linea y la expresin "<?php". 1. Lo primero es crear una base de datos a la cual vamos a poner nombre "registr o". En la cual vamos a generar la siguiente consulta SQL: Cdigo: 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) ) Lo que estamos haciendo es crear una tabla en nuestra base de datos llamada "usu arios", en la cual almacenaremos los datos de nuestros usuarios. 2. Luego empezaremos con la creacin de nuestro primer archivo "conexion.php", el cual se encarga de conectar nuestro sistema con la base de datos que creamos en el punto anterior. Este archivo tambin tendr algunas funciones php necesarias para el registro y el logueo de los usuarios. Cdigo:

<?php $nombre_server[1] = 'localhost'; //Servidor al cual nos vamos a conectar. $nombre_user[2] = 'root'; //Nombre del usuario de la base de datos. $password[3] = ''; //Contrasea de la base de datos $nombre_db[4] = 'registro'; //nombre de la base de datos $conectar = @mysql_connect($nombre_server[1],$nombre_user[2],$password[3]) o r exit('Datos de conexion incorrectos.'); mysql_select_db($nombre_db[4]) or exit('No existe la base de datos.'); /*En este archivo tambin pondremos unas funciones necesarias para el registro y e l login*/ session_start(); /*Funcin que se encarga de eliminar codigo malicioso de las variables.*/ function limpiar($var) { $var = $var = $var = return } /*Funcin que se encarga de validar el email de registro para que sea correcto.*/ function validar_email($email){ $mail_correcto = 0; //compruebo unas cosas primeras if ((strlen($email) >= 6) && (substr_count($email,"@") == 1) && (substr($ema il,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_do m,"@")) ) {//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 != ".") { $mail_correcto = 1; } } } } } if ($mail_correcto) return 1; else return 0; } /*Funcion que se encarga de validar si el usuario esta registrado en el sistema* trim($var); htmlspecialchars($var); str_replace(chr(160),'',$var); $var;

/ function user_login() { if(!$_SESSION['id']) { exit ("Solo usuarios registrados, <a href='javascript:history.back(-1)'> Volver</a>"); } } ?> Ya tenemos nuestro archivo de conexin con la base de datos entonces continuamos c on el archivo "registro.php" que como su nombre lo indica se encargara de almace nar los usuarios en la base de datos.

Cdigo: <?php include("conexion.php"); //Sistema de registro --HiperAcme.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;as no coinciden'; } else { $date= time(); $nick= limpiar($_POST['nick']); $mail= limpiar($_POST['mail']); $pass= md5(md5(limpiar($_POST['pass']))); $ipuser= $_SERVER['REMOTE_ADDR']; $b_user= mysql_query("SELECT nick FROM usuarios WHERE nick='$nick'") ; if($user=@mysql_fetch_array($b_user)) { echo '<br />El nombre de usuario o el email ya esta registrado.' ; mysql_free_result($b_user); //liberamos la memoria del query a l a db } else { if(validar_email($_POST['mail'])) { mysql_query("INSERT INTO usuarios (fecha,nick,mail,pass,ip) values ('$date','$nick','$mail','$pass','$ipuser')"); echo '<br />Te has registrado Correctamente, ahora podras in iciar sesi&oacute;n como usuario registrado.'; } else {

echo '<br />El email no es valido.'; } } } } else { echo '<br />Deberas llenar todos los campos.'; } } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.or g/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>Registro de Usuarios</title> </head> <body> <h2>Sistema de Registro</h2> <div align="center"> <form name="registrar" action="registro.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>Contrasea:</label></dt> <input type="password" name='pass' /><br /><br /> <dt><label>Confirmar Contrasea:</label></dt> <input type="password" name='conf_pass' /><br /><br /><br /><br /> <input type="submit" name="registro" style="width:100px;" tabindex="6" v alue="Registrar" /> <input type="reset" name="Limpiar" style="width:100px;" tabindex="6" val ue="Limpiar" /> </form> <a href="login.php">Identificarse</a> </div> </body> </html> Hasta aqu nuestro sistema de registro ya funciona y va perfectamente. 4. Ahora procedemos a crear el archivo de conexin de los usuarios , el "login.php ". Este archivos es el encargado de guardar la sesin se los usuarios para que el si stema los reconozca como usuarios registrados y logueados. Cdigo: <?php include("conexion.php"); if(isset($_POST['login'])) { $nick= $_POST['nick']; $pass= md5(md5($_POST['pass']));

$b_user=mysql_query("SELECT * FROM usuarios WHERE nick='$nick'"); $ses = @mysql_fetch_assoc($b_user) ; if(@mysql_num_rows($b_user)) { if($ses['pass'] == $pass) { $_SESSION['id']= $ses["id"]; $_SESSION['fecha']= $ses["fecha"]; $_SESSION['nick']= $ses["nick"]; $_SESSION['mail']= $ses["mail"]; $_SESSION['ip']= $ses["ip"]; } else { echo 'Nombre de usuario o Contrase&ntilde;a incorrecta.'; } } else { echo 'Nombre de Usuario o contrase&ntilde;a incorrecta.'; } } if(isset($_GET['modo']) == 'desconectar') { session_destroy(); echo '<meta http-equiv="Refresh" content="2;url=login.php"> '; exit ('Te has desconectado del sistema.'); } if(isset($_SESSION['id'])) { echo 'Bienvenido <b>' . $_SESSION['nick'] . '</b><br /><br />'; echo '<b>Fecha registro:</b> ' . date("d-m-Y - H:i", $_SESSION['fecha']) . ' <br />'; echo '<b>Email:</b> ' . $_SESSION['mail'] . '<br />'; echo '<b>IP:</b> ' . $_SESSION['ip'] . '<br /><br />'; echo '<a href="login.php?modo=desconectar">Salir</a>'; } else { ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.or g/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>Login</title> </head> <body> <h2>Conetarse - Desconectarse</h2> <div align="center"> <form name="login_user" action="login.php" method="post" /> <dt><label>Nick:</label></dt> <input type='text' name='nick' /><br /><br /> <dt><label>Contrasea:</label></dt> <input type="password" name='pass' /><br /><br /> <input type="submit" name="login" style="width:100px;" tabindex="6" valu e="Entrar" />

<input type="reset" name="Limpiar" style="width:100px;" tabindex="6" val ue="Limpiar" /> </form> <a href="registro.php">Registrarse</a> </div> <?php } ?> </body> </html> Aqu no solo tenemos el encargado de iniciar la sesin de los usuarios, sino que tam bin se cumplen dos funciones mas: Mostrar algunas opciones del perfil del usuario luego de verificar que esta log ueado. Terminar la sesin de usuario [Desconectarse]. Que podrn verlas funcionando a la hora de implementar el cdigo o en el ejemplo fun cional que dejare al final. Hasta este momento, ya tienes todo el registro el logueo de usuarios totalmente funcional, as que hasta aqu ya tienes tenemos completo nuestro sistema de informac in. 5. El ultimo de nuestros archivos, simplemente es un archivo de ejemplo para mos trar como proteger nuestra paginas de invitados que solo sena accesibles para us uarios registrados, en este caso crearemos el archivo "perfil.php".

Cdigo: <?php include("conexion.php"); user_login(); echo '<h2>Pagina solo para usuarios registrados</h2><br echo '<b>Nombre de Usuario:</b> ' . $_SESSION['nick'] . echo '<b>Fecha de registro:</b> ' . date("d-m-Y - H:i", . '<br />'; echo '<b>Email de registro:</b> ' . $_SESSION['mail'] . echo '<b>IP:</b> ' . $_SESSION['ip'] . '<br /><br />'; echo '<a href="login.php?modo=desconectar">Salir</a>'; ?>

/>'; '<br />'; $_SESSION['fecha']) '<br />';

La funcin user_login() (que pueden encontrar en el archivo conexion.php) es la en cargada de verificar que el usuario este logueado, de lo contrario le mostrara u n aviso dicindole que no lo esta y no le dejara ver el contenido de la pagina que esta visitando. As que las paginas que quieran proteger debern agregarle la linea:

Cdigo: user_login(); Al principio luego de incluir el archivo de conexin.

Y luego de estos sencillos pasos tenemos nuestro sistema de registro de usuarios funcionando. Cualquier duda me la pueden preguntar y estar dispuesto a ayudarles, el archivo c on todo el script lo pueden descargar desde aqu: Descarga Script Completo Y lo pueden ver funcionando en Login

Anda mungkin juga menyukai