Sei sulla pagina 1di 16

Como Hacer un Sistema de Registro de Usuarios en PHP y MySQL

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. Crear la tabla en MySQL


Vamos a comenzar preparando una tabla en nuestra base de datos, la cual almacenara la informacin de los usuarios, para crear la tabla simplemente copia y ejecuta la siguiente consulta SQL:

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. Conectando a MySQL en PHP


Ya una vez que tengamos la estructura de nuestra tabla, creamos un archivo llamado conexion.php. 1 <?php

2 3 4 5 6

// datos para la coneccion a mysql define('DB_SERVER','localhost'); define('DB_NAME','TU_BASE_DE_DATOS'); define('DB_USER','TU_USUARIO'); define('DB_PASS','TU_CLAVE');

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

<?php session_start(); include_once "conexion.php";

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.

Decoracin opcional con CSS


Esta parte es algo de CSS opcional ya que no influye en nada en el funcionamiento del sistema, es unicamente decorativa: *{ 1

2 3
}

font-size: 14px; font-family: sans-serif;

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;

form.registro div { margin-bottom: 15px; overflow: hidden;

14 15 16 17

form.registro div label { display: block; float: left; line-height: 25px;

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
}

margin: 10px; text-align: center;

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.

Como Hacer un Sistema de Login de Usuarios en PHP y MySQL


En este tutorial desarrollaremos y explicaremos un sistema de autentificacion de usuarios, este tipo de sistemas se utilizan para limitar el acceso a ciertas paginas de nuestro sitio Web.

1. Preparando una tabla en MySQL


Vamos a comenzar preparando una tabla en nuestra base de datos, la cual almacenara la informacin de los usuarios, para crear la tabla simplemente copia y ejecuta la siguiente consulta SQL: 1 CREATE TABLE `usuarios` (

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. Conectando a MySQL en PHP


Ya una vez que tengamos la estructura de nuestra tabla, creamos un archivo llamado conexion.php. 1
<?php

2 3 4 5 6

// datos para la coneccion a mysql define('DB_SERVER','localhost'); define('DB_NAME','TU_BASE_DE_DATOS'); define('DB_USER','TU_USUARIO'); define('DB_PASS','TU_CLAVE');

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

$con = mysql_connect(DB_SERVER,DB_USER,DB_PASS); 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); ?>

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

<?php session_start(); include_once "conexion.php";

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

{ if(isset($_POST['login'])) { if(verificar_login($_POST['user'],$_POST['password'],$result) == 1) { $_SESSION['userid'] = $result->idusuario; header("location:index.php"); } else {

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
} ?>

echo 'Su usuario ingreso correctamente.'; echo '<a href="logout.php">Logout</a>';

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.

Decoracin opcional con CSS


Esta parte es opcional ya que no influye en nada en el funcionamiento del sistema, es unicamente decorativa: 1 *{

2 3 4 5
}

font-size: 14px; font-family: sans-serif;

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
} }

border: 1px solid #DCDCDC; float: right; padding: 4px;

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
}

color: red; font-weight: bold; margin: 10px; text-align: center;

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;

if(!isset($_SESSION['userid'])) { if(isset($_POST['login'])) { if(verificar_login($_POST['user'],$_POST['password'],$result) == 1) { $_SESSION['userid'] = $result->idusuario;

31 32 33 34 35 36 37 38 39
?> } } } else {

header("location:index.php");

echo '<div class="error">Su usuario es incorrecto, intente nuevamente.</

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;

form.login div { margin-bottom: 15px; overflow: hidden;

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

background: none repeat scroll 0 0 #DEDEDE;

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
}

color: red; font-weight: bold; margin: 10px; text-align: center;

</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.

Potrebbero piacerti anche