You are on page 1of 6

Vamos a seguir un ejemplo básico para hacer un sistema de registro y un sistema de login mediante sesiones.

El ejemplo sigue los siguientes pasos: - 1º tabla de mysql y código general - 2º sistema de registro - 3º sistema de login - 4º ejemplo práctico del login Para ello es necesario un host con PHP, las sesiones activadas y mysql. :: Tabla del Mysql y código general Este php irá en todos los .php que usemos porque contiene los datos para la conexión a la db: <? $dbhost="localhost"; //Host del mysql $dbuser="usuario"; //Usuario del mysql $dbpass="password"; //Password del mysql $db="db_usuarios"; //db donde se creará la tabla users //conectamos y seleccionamos db mysql_connect("$dbhost","$dbuser","$dbpass"); mysql_select_db("$db");
//Comenzamos la sesión, esto se explica despues en el Sistema de Login session_start(); ?>

config.php

Crearemos una tabla llamada users con los campos: id,nick, pass,email,fecha,level,rollo . <?
CREATE TABLE `users` ( `id` INT( 4 ) NOT NULL AUTO_INCREMENT, `nick` VARCHAR(30) NOT NULL , `pass` VARCHAR(30) NOT NULL , `email` VARCHAR(50) NOT NULL , `fecha` INT(15) NOT NULL , `level` INT(2) NOT NULL , `rollo` LONGTEXT NOT NULL , INDEX ( `id` ) ); ?>

:: Sistema de registro

reg. //liberamos la memoria del query a la db }else{ //quitamos todo el codigo malicioso de las demas variables del form de registro $email = stripslashes($_POST["email"]). . mysql_free_result($usuarios).Primero comenzaremos con una pagina llamada reg. //incluimos el config. }else{ //quitamos el codigo malicioso de $_POST[nick] y $_POST[pass] $user = stripslashes($_POST["nick"]). volvemos a reg. //incluimos el config. //enviamos al form de registro que esta en reg.php include('config.php if($_POST[pass] != $_POST[pass1]) { echo 'Las passwords no son iguales'.php <? include('config. if($user_ok=mysql_fetch_array($usuarios)) { echo 'El usuario ya esta registrado'. $pass = stripslashes($_POST["pass"]).php'). Este formulario se enviará a registrar.php que tiene un formulario donde introducir los datos.php. sino.php que contiene los datos de la conexión a la db //Creamos el form k irá a registrar. sino volvemos al form if(($_POST[nick] == ' ') or ($_POST[pass] == ' ') or ($_POST[pass1] == ' ') ) { Header("Location: reg.php').php" method="POST"> Nick: <input type="text" name="nick" size="30"><br> Password: <input type="password" name="pass" size="30" ><br> Repetir Password: <input type="password" name="pass1" size="30" ><br> email: <input type="text" name="email" size="50"><br> Rollo: <textarea name="rollo" cols="30" rows="10"></textarea><br> <input type="submit" name="submit" value="Enviar"></form>'.php para comprobar y introducir los datos a la tabla users echo '<form action="registrar.php que contiene los datos de la conexión a la db //Comprobamos que los campos nick. //comprobamos que el usuario no existe en la db $usuarios=mysql_query("SELECT nick FROM users WHERE nick='$user' "). $pass = strip_tags($pass).php }else{ //Comprobamos que la pass y pass1 son iguales. pass y pass1 se han rellenado en el form de reg. $email = strip_tags($email).php donde realizará las comprobaciones e introducirá los datos a la tabla users en el mysql. $user = strip_tags($user). ?> <? registrar.php").

php .php tiene k ser <? login. Las sesiones sirven para pasar datos de una pagina . siempre que se ponga el session_start(). strip_tags($rollo). .'$level'. * Nota. //usaremos level 1 para admins. Las sesiones tienen la ventaja de que se crean en el servidor (las cookies no) y no tienen que estar activadas por el usuario.level.php."<br>". o un archivo que contenga esta función."<br>". es decir. } } } ?> :: Sistema de login Comenzaremos con un pequeño form en login.php donde se introduciran los datos para ser comprobados en autentificar.php y comenzar las sesiones. en el config.$rollo).'$rollo') ").$rollo).rollo) values ('$user'. por lo tanto pueden ser utilizadas por cualquiera.pass.$rollo $rollo $rollo $rollo $rollo = = = = = stripslashes($_POST["rollo"]). $fecha = time(). $level = "2". level 2 para los demas (se cambia manualmente desde phpmyadmin) //introducimos el nuevo registro en la tabla users mysql_query("INSERT INTO users (nick."<br>". Tambíen exponer el código para deslogearse.'$fecha'. o el include con el archivo que contiene el start como puede ser include('config. Por este motivo todas las webs en las que queramos pasar la session deben comenzar por session_start().email.php. str_replace("\n".'$email'.'$pass'. como es nuestro caso.$rollo).fecha. el primer caracter de la pagina .php a otra sin necesidad de hacer querys ni nada por el estilo.php'). echo 'Usuario registrado con éxito'. str_replace("\n\r". //se cambian los saltos de linea por <br> str_replace("\r\n". antes del <? no puede haber ningun espacio en blanco. que estará en logout.

volvemos al index }else{ //comprobamos en la db si existe ese nick con esa pass $usuarios=mysql_query("SELECT * FROM users WHERE nick='$_POST[nick]' and pass='$_POST[pass]' "). que no se ha logeado.php>Salir</a>'. }else{ //SI se ha logeado. y mostramos el form { //Creamos el form k irá a autentificar. se puede modificar y añadir cosas echo 'Bienvenido '. //damos el nick a la variable usuario $_SESSION[idusuario] = $user_ok["id"]. iría a logout.php para comprobar los datos con la tabla users echo '<form action="autentificar. es decir. //registramos la variable level que contendrá el level del user //damos valores a las variables de la sesión $_SESSION[usuario] = $user_ok["nick"]. por lo tanto no se le mostrará) //*Nota2: para cambiar el level a 1.php tienen contenido { Header("Location: login. //registramos la variable idusuario que contendrá la id del user session_register("level"). //incluimos el config. } echo '<br><a href=logout.$_SESSION[level].php } ?> autentificar. //estan vacías. mostramos el nick y la opción de deslogearse //Este sería el menú que saldría a la gente que esta logeada.<? include('config. al index { session_register("usuario"). //incluimos el config.php <? include('config. //registramos la variable usuario que contendrá el nick del user session_register("idusuario").php>Ir a pagina privada</a>'. si no. //mostramos el level del user if($_SESSION[level] == 1) { //mostramos el link para ir a la pagina privada porque el user tiene level 1 (*Nota: el level por defecto es 2. //damos la id del user a la variable idusuario .$_SESSION[usuario]. //ej Bienvenido Juan echo '<br>Tu level es '.php').php" method="POST"> Nick: <input type="text" name="nick" size="30"><br> Password: <input type="password" name="pass" size="30" ><br> <input type="submit" name="submit" value="Enviar"></form>'. //link para deslogearse.php que contiene los datos de la conexión a la db if( ($_POST[nick] == ' ') or ($_POST[pass] == ' ') )//comprobamos que las variables enviadas por el form de login.php que contiene los datos de la conexión a la db if(!isset($_SESSION[usuario]) ) //comprobamos que no existe la session.php').php"). if($user_ok = mysql_fetch_array($usuarios)) //si existe comenzamos con la sesion. se tiene k hacer manualmente por phpmyadmin echo '<br><a href=paginaprivada.

php como un include('login.php <? include('config. del tipo perfil.php que contiene los datos de la conexión a la db y la sesión session_destroy(). //volvemos al login donde nos saldrá nuestro menú de usuario }else{ echo 'Nick y pass incorrectos'. //destruimos la sesion Header("Location: login. //volvemos al login.php").php <? include('config. //damos el level del user a la variable level Header("Location: login. }else{ Header("Location: index. :: Ejemplos prácticos .php ?> * Nota: Si utilizáis el login.php').php").php").php').php?id=3.php").$_SESSION[level] = $user_ok["level"].php"). } ?> Hacer una página donde se muestre la información de un usuario.php'). } } ?> logout. . //incluimos el config.php deberíais cambiar los Header("Location: login. por Header("Location: index. donde id sera el identificador del usuario. //incluimos el config.php que contiene los datos de la conexión a la db y la sesión if($_SESSION[level] == 1) { echo 'Tienes level 1 y puedes ver esta página'. dentro de un index.Hacer una página privada donde solo puedan entrar los de level 1: paginaprivada.

H:i".$fecha.'">'. //no han seleccionado ninguna id. rubenico & PHP-Hispano.m. } } ?> Todos estos códigos y ejemplos son una guía de como se deben hacer o empezar a hacer las cosas. Pueden mejorarse en cuanto a seguridad y a calidad pero son suficientes para poder realizar un sistema de login decente. //incluimos el config.Y .'</b><br>'. ahora solo falta mostrar los datos echo 'Usuario <b>'.'<br>'.$user_ok["email"]. aprendemos todos) .net (porque al final.$user_ok["rollo"].php'). }else{ //comprobamos si esa id existe $user=mysql_query("SELECT * FROM users WHERE id='$id' "). //sacamos la fecha de registro mediante la funcion date $fecha=date("d. $user_ok["fecha"]). echo '<br>Email: <a href="mailto:'.$user_ok["nick"].php que contiene los datos de la conexión a la db y la sesión if(!isset($id)) { echo 'no se ha seleccionado ninguna id'. Un saludo. //por último mostramos el rollo echo 'Rollo:<br>'.$user_ok["email"].php <? include('config. if($user_ok=mysql_fetch_array($user) ) { //todo comprobado.'</a><br>'. echo 'Fecha de registro: '. }else{ echo 'La id seleccionada no existe'.perfil.