Vous êtes sur la page 1sur 11

Sistema de registro para usuarios

Requerimientos:
Hosting (servidor local o web)
PHP (ojala 5)
1 base de datos MySQL
Analisis:
Para el desarrollo del script necesitaremos la creacin de 4 archivos .php:
Ojo este anlisis lo deben hacer siempre .
conexion.php
registro.php
login.php
perfil.php
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:
Cdigo:
CREATE TABLE usuarios (
id
fecha

int(5) not null auto_increment,


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
"usuarios", en la cual almacenaremos los datos de nuestros usuarios.

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 .
Este archivo tambin tendr algunas funciones php necesarias para el registro
y el logueo de los usuarios.
Cdigo:
<?php
$nombre_server= 'localhost'; //Servidor al cual nos vamos a conectar.
$nombre_user = 'root'; //Nombre del usuario de la base de datos.
$passwor] = ''; //Contrasea de la base de datos
$nombre_db = 'registro'; //nombre de la base de datos
$conectar = @mysql_connect($nombre_server,$nombre_user,$password) or
exit('Datos de conexion incorrectos.');
mysql_select_db($nombre_db[4]) or exit('No existe la base de datos.');
En este archivo tambin van unas funciones necesarias para el
registro y el login
session_start();
Funcin que se encarga de eliminar codigo malicioso de las variables.
function limpiar($var)
{
$var = trim($var);
$var = htmlspecialchars($var);
$var = str_replace(chr(160),'',$var);
return $var;
}

Funcin que se encarga de validar el email de registro para que sea


correcto.

function validar_email($email){
$mail_correcto = 0;
if ((strlen($email) >= 6) && (substr_count($email,"@") == 1) &&
(substr($email,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 terminacion del dominio sea correcta
if (strlen($term_dom)>1 && strlen($term_dom)<5 && (!
strstr($term_dom,"@")) )
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
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 con el archivo "registro.php" que como su nombre lo indica se
encargara de almacenar los usuarios en la base de datos.
Cdigo:
<?php
include("conexion.php");
Sistema de registro
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 la 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 iniciar
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// >
<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" value="Registrar" />
<input type="reset" name="Limpiar" style="width:100px;" tabindex="6"
value="Limpiar" />
</form>
<a href="login.php">Identificarse</a>
</div>
</body>
</html>
Muchachos hasta aqu nuestro sistema de registro ya debe funcionar
perfectamente.
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
sistema 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']=
$_SESSION['fecha']=

$ses["id"];
$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.org/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"


value="Entrar" />
<input type="reset" name="Limpiar" style="width:100px;" tabindex="6"
value="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
tambin se cumplen dos funciones mas:
Mostrar algunas opciones del perfil del usuario luego de verificar que esta
logueado.
Terminar la sesin de usuario [Desconectarse].
Que podrn verlas funcionando a la hora de implementar el cdigo o en el
ejemplo funcional que voy a poner en el final traten de implementar este
cdigo para proteger sus paginas de ahora en adelante o en cualquier proyecto
que desarrollemos.
Hasta este momento, ya tenemos todo el registro el logueo de usuarios
totalmente funcional, as que hasta aqu ya tenemos completo nuestro sistema
de informacin.

El ultimo de nuestros archivos, simplemente es un archivo de ejemplo para


mostrar como proteger nuestra paginas de invitados que solo sena accesibles
para usuarios 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'] . '<br />';
echo '<b>Fecha de registro:</b> ' . date("d-m-Y - H:i", $_SESSION['fecha']) .
'<br />';
echo '<b>Email de registro:</b> ' . $_SESSION['mail'] . '<br />';
echo '<b>IP:</b> ' . $_SESSION['ip'] . '<br /><br />';
echo '<a href="login.php?modo=desconectar">Salir</a>';
?>
La funcin user_login() (que pueden encontrar en el archivo conexion.php) es la
encargada de verificar que el usuario este logueado, de lo contrario le mostrara
un 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();

Vous aimerez peut-être aussi