En este tutorial desarrollaremos y explicaremos un sistema de registro de usuarios, este tutorial es una continuacin de este otro donde vimos como crear un sistema de login de usuarios.
1 2 3 4 5 6
CREATE TABLE `usuarios` ( `idusuario` INT(11) NOT NULL AUTO_INCREMENT, `usuario` VARCHAR(20) NOT NULL, `password` VARCHAR(10) NOT NULL, PRIMARY KEY (`idusuario`) )
2 3 4 5 6
La funcion define como su nombre lo dice, se usa para definir una constante nominada, que nos permite almacenar valores escalares(string, integer, float, boolean y nulos). 1 $con = mysql_connect(DB_SERVER,DB_USER,DB_PASS);
2 3
mysql_select_db(DB_NAME,$con); ?>
La funcin de mysql_connect nos servira para abrir una conexin al servidor de MySQL usando los 3 parmetros que declaramos anteriormente.
Luego mysql_select_db selecciona la base de datos usando 2 parmetros, el nombre de la base de datos y la conexin a usar.
Cdigo completo
1 2 3 4 5 6 7 8 9
<?php // datos para la conexion a mysql define('DB_SERVER','localhost'); define('DB_NAME','TU_BASE_DE_DATOS'); define('DB_USER','TU_USUARIO'); define('DB_PASS','TU_CLAVE'); $con = mysql_connect(DB_SERVER,DB_USER,DB_PASS); mysql_select_db(DB_NAME,$con); ?>
4. index.php
Ahora pasamos el archivo index.php, el cual contendr el formulario de registro y al mismo tiempo el mensaje de fue registrado correctamente o faltan llenar campos.
1 2 3
session_start() crea una sesin para ser usada mediante una peticin GET o POST, o pasado por una cookie y la sentencia include_once es la usaremos para incluir el archivo de conexin a la base de datos que creamos anteriormente.
1 2 3 4 5 6
<form action="" method="post" class="registro"> <div><label>Usuario:</label> <input type="text" name="usuario"></div> <div><label>Clave:</label> <input type="password" name="password"></div> <div><label>Repetir Clave:</label> <input type="password" name="repassword"></div> <div><input type="submit" name="enviar" value="Registrar"></div> </form>
Creamos el formulario con el campo de Usuario que se llamara $_POST['usuario'] y 2 campos para la clave y uno mas para confirmar si escribi bien la clave, se llamaran $_POST['password'] y $_POST['repassword']respectivamente, procedemos a escribir el codigo que procesara y validara lo que el usuario ingrese:
1 2 3 4 if(isset($_POST['enviar'])) 5 { if($_POST['usuario'] == '' or $_POST['password'] == '' or $_POST['repassword'] == '') 6 { 7 echo 'Por favor llene todos los campos.'; 8 } 9 else 10 { $sql = 'SELECT * FROM usuarios'; 11 $rec = mysql_query($sql); 12 $verificar_usuario = 0; 13 14 while($result = mysql_fetch_object($rec)) 15 { 16 if($result->usuario == $_POST['usuario']) { 17 $verificar_usuario = 1; 18 } 19 } 20 21 if($verificar_usuario) { 22 if($_POST['password'] == $_POST['repassword']) 23 { 24 $usuario = $_POST['usuario']; 25 $password = $_POST['password']; 26 $sql = "INSERT INTO usuarios (usuario,password) VALUES ('$usuario','$password')"; mysql_query($sql); 27 28 echo 'Usted se ha registrado correctamente.'; 29 } 30 else 31 { echo 'Las claves no son iguales, intente nuevamente.'; 32 } 33 } 34 else 35 { 36 echo 'Este usuario ya ha sido registrado anteriormente.'; } 37 } 38 } 39 40 41 42
Linea 1: La primera condicin es para saber cuando el formulario haya sido enviado.
Linea 3: Si los campos estn vacos muestra el siguiente mensaje, caso contrario sigue el siguiente bloque de cdigo. Linea 11, 15 y 21: Creamos la variable $verificar_usuario que empieza con un valor de 0, pero si la condicin de la linea 15 resulta verdadera, entonces la variable toma el valor de 1 que quiere decir que ese nombre de usuario ya existe por lo tanto no se puede registrar.
Linea 23: Si los campos son iguales, continua el registro o caso contrario saldr un mensaje de error. Linea 27: Se insertan los datos a la base de datos, el usuario es registrado con exito y sale el mensaje correspondiente.
2 3
}
4
form.registro{
5 6 7 8 9 10 11 12 13
} }
background: none repeat scroll 0 0 #F1F1F1; border: 1px solid #DDDDDD; margin: 0 auto; padding: 20px; width: 278px;
14 15 16 17
18 19 20 21 22
} form.registro div input[type="text"], form.registro div input[type="password"] { border: 1px solid #DCDCDC; float: right; padding: 4px; }
23 24 25 26 27 28 29 30 31
form.registro div input[type="submit"] { background: none repeat scroll 0 0 #DEDEDE; border: 1px solid #C6C6C6; float: right; font-weight: bold; padding: 4px 20px; } .error{ color: red; font-weight: bold;
32 33 34 35 36 37 38
}
Y con esto terminamos el nuestro sistema de registro en PHP, recuerda que puedes probar el resultado final en esta direccin o bajarte el cdigo fuente desde aqui.
2 3 4 5 6
)
`idusuario` INT(11) NOT NULL AUTO_INCREMENT, `usuario` VARCHAR(20) NOT NULL, `password` VARCHAR(10) NOT NULL, PRIMARY KEY (`idusuario`)
2 3 4 5 6
La funcion define como su nombre lo dice, se usa para definir una constante nominada, que nos permite almacenar valores escalares(string, integer, float, boolean y nulos).
1 2 3
La funcin de mysql_connect nos servira para abrir una conexin al servidor de MySQL usando los 3 parmetros que declaramos anteriormente. Luego mysql_select_db selecciona la base de datos usando 2 parmetros, el nombre de la base de datos y la conexin a usar.
Cdigo completo
1 2 3 4 5 6 7 8 9
<?php // datos para la conexion a mysql define('DB_SERVER','localhost'); define('DB_NAME','TU_BASE_DE_DATOS'); define('DB_USER','TU_USUARIO'); define('DB_PASS','TU_CLAVE'); $con = mysql_connect(DB_SERVER,DB_USER,DB_PASS); mysql_select_db(DB_NAME,$con); ?>
3. logout.php
Creamos un archivo que se llame logout.php para que realice el cierre de sesin. 1 <?php
2 3 4 5 6
?>
session_start(); session_destroy();
header('location: index.php');
La funcion de session_destroy() destruye toda la informacin registrada de una variable de sesin, luego elheader(location: index.php) redireccionara al usuario al index.php
4. index.php
Ahora pasamos el archivo index.php, el cual contendr el formulario de login y al mismo tiempo el mensaje de bienvenida o de error.
1 2 3
session_start() crea una sesin para ser usada mediante una peticin GET o POST, o pasado por una cookie y la sentencia include_once es la usaremos para incluir el archivo de conexin a la base de datos que creamos anteriormente.
Funcin verificar_login()
Vamos a crear una funcin llamada verificar_login, esta se encargara de hacer una consulta a la base de datos para saber si el usuario ingresado es correcto o no. function verificar_login($user,$password,&$result) 1
2 3 4 5 6 7 8 9 10 11
$sql = "SELECT * FROM usuarios WHERE usuario='$user' and password='$password $rec = mysql_query($sql); $count = 0; while($row = mysql_fetch_object($rec)) { $count++; $result = $row; } if($count == 1) {
12 13 14 15 16
} } else {
return 1;
return 0;
17 18 19
Luego haremos una serie de condicionales que identificaran el momento en el boton de login es presionado y cuando este sea presionado llamaremos a la funcin verificar_login() pasandole los parmetros ingresados: 1 if(!isset($_SESSION['userid']))
2 3 4 5 6 7 8 9 10 11 12 13 14 15
echo '<div class="error">Su usuario es incorrecto, intente nuevamente.</ } } ?> <form action="" method="post" class="login">
16 17 18 19 20
<div><label>Username</label><input name="user" type="text" ></div> <div><label>Password</label><input name="password" type="password"></div> <div><input name="login" type="submit" value="login"></div> </form> <?php } else {
21 22 23 24 25 26
} ?>
Linea 1: La primera condicin es para saber si existe o no ya la variable de sesin que se va a crear cuando el usuario se logee Linea 3: Si la primera condicin no pasa, haremos otra preguntando si el boton de login fue presionado Linea 5: Si el boton fue presionado llamamos a la funcin verificar_login() dentro de otra condicin preguntando si resulta verdadero y le pasamos los valores ingresados como parmetros. Linea 7 y 8: Si el login fue correcto, registramos la variable de sesin y al mismo tiempo refrescamos la pagina index.php. Linea 12: Si la funcin verificar_login() no pasa, que se muestre un mensaje de error. Linea 22: Si la variable de sesin userid ya existe, que muestre el mensaje de saludo.
2 3 4 5
}
form.login {
6 7 8 9 10
}
background: none repeat scroll 0 0 #F1F1F1; border: 1px solid #DDDDDD; margin: 0 auto; padding: 20px; width: 278px;
11 12 13 14 15 16 17 18
form.login div { margin-bottom: 15px; overflow: hidden; } form.login div label { display: block; float: left; line-height: 25px; }
19
form.login div input[type="text"], form.login div input[type="password"] {
20 21 22 23 24 25 26 27 28 29
} }
form.login div input[type="submit"] { background: none repeat scroll 0 0 #DEDEDE; border: 1px solid #C6C6C6; float: right; font-weight: bold; padding: 4px 20px;
30
.error{
31 32 33 34
}
35 36 37 38
Cdigo completo
1 2 3 4 5 6 7 8 9 10 11 12 13 14
} while($row = mysql_fetch_object($rec)) { $count++; $result = $row; function verificar_login($user,$password,&$result) { <?php session_start(); include_once "conexion.php";
$sql = "SELECT * FROM usuarios WHERE usuario = '$user' and password = '$password $rec = mysql_query($sql); $count = 0;
15 16 17 18 19
if($count == 1) { return 1; }
else
20
{
21 22 23 24 25 26 27 28 29 30
} }
return 0;
31 32 33 34 35 36 37 38 39
?> } } } else {
header("location:index.php");
40 41 42 43 44
<style type="text/css"> *{ font-size: 14px; } form.login { background: none repeat scroll 0 0 #F1F1F1;
45 46 47 48 49 50 51 52 53
} }
border: 1px solid #DDDDDD; font-family: sans-serif; margin: 0 auto; padding: 20px; width: 278px;
54 55 56 57 58 59 60 61 62
form.login div label { display: block; float: left; line-height: 25px; } form.login div input[type="text"], form.login div input[type="password"] { border: 1px solid #DCDCDC; float: right; padding: 4px; }
63
form.login div input[type="submit"] {
64
65 66 67 68
}
border: 1px solid #C6C6C6; float: right; font-weight: bold; padding: 4px 20px;
69
.error{
70 71 72 73 74 75 76 77 78 79
}
</style>
<form action="" method="post" class="login"> <div><label>Username</label><input name="user" type="text" ></div> <div><label>Password</label><input name="password" type="password"></div> <div><input name="login" type="submit" value="login"></div>
80 81 82 83 84 85 86 87 88 89
</form> <?php } else { echo 'Su usuario ingreso correctamente.'; echo '<a href="logout.php">Logout</a>'; } ?>
90 91 92 93 94
Y con esto terminamos el nuestro sistema de login en PHP, recuerda que puedes probar(usar admin/admin como user/pass) el resultado final en esta direccin o bajarte el cdigo fuente desde aqui.