sábado, 22 de diciembre de 2007

Registro de Usuarios en PHP

Bien, este artículo será muy útil para aquellos que deseen incluir un sistema de identificación de miembros en su página web.

Para empezar deberemos crear una tabla llamada "usuarios" en la base de datos mysql, en ella se guardaran los datos de los usuarios registrados.

CREATE usuarios (
id TINYINT(11) AUTO_INCREMENT,
nombre TEXT,
user VARCHAR(40),
pass VARCHAR(20),
email TEXT,
UNIQUE (id) );

A continuación vamos a crear un formulario de registro, donde el usuario pueda introducir sus datos para identificarse posteriormente, después de el formulario de registro crearemos la pagina de validación del formulario.


registro.php:
<form action="validar_registro.php" method="post">
Usuario: <input name="user" type="text">
Contraseña: <input name="pass1" type="password">
Repetir Contraseña: <input name="pass2" type="password">
Nombre: <input name="nombre" type="text">
Correo electronico: <input name="email" type="text">
<input name="Crear" type="submit">
</form>



En el formulario de registro enviamos mediante POST las variables que el usuario ha introducido al archivo "validar_registro.php"

Validar_registro.php:
<?
$srv="localhost"; //server mysql
$bdname="bd1"; // nombre bd
$bduser="root"; // user mysql
$bdpass=""; //contraseña del user mysql
//primero comprobamos que no exista el usuario.
$user = $_POST['user'];
$pass2 = $_POST['pass1'];
$pass1 = $_POST['pass2'];
$email = $_POST['email'];
$name = $_POST['nombre'];
$ssql="SELECT * FROM usuarios WHERE user='" . $user . "'";
$link=mysql_connect($srv,$bduser,$bdpass);
$result=mysql_db_query($bdname,$ssql,$link);
if(mysql_num_rows($result)){
echo "Nombre de usuario en uso.";
} else {
mysql_free_result($result);
//procedimos a comprobar contraseñas
if($pass1!=$pass2) {
echo "Error: las contraseñas especificadas son distintas
";
} else {
$ssql="INSERT INTO usuarios (user, nombre, pass, email) VALUES ('$user','$name','$pass1','$email')";
if(mysql_db_query($bdname,$ssql,$link)){
echo "Usuario registrado con exito.";
} else {
echo "Error registrando usuario.";
}
}
}
?>




A continuacion vamos a crear una pagina en la que se muestre un formulario para identificarse, en caso de que el usuario estuviera identificado lo mandamos directamente a la pagina restringida.

form_identificacion.php:
session_start();
if(isset($SESSION)){
header("location: pagina_protegida.php");
} else {
//si no esta identificado, colocamos formulario para que se identifique
?>
<title>Necesita identificación! </title>
<center>
Identificacion
</center>
<form action="comprueba.php" method="post"></form>
Usuario: <input name="user" id="user" type="text">
Contraseña:<input name="pass" type="password">
<input value="Entrar" type="submit">
[<a href="registro.php">Registrate gratis!</a>]
<?
}
?>



Y ahora validaremos los datos de este formulario:

valida_login.php:
<?
session_start();
$srv="localhost"; //server mysql
$bdname="bd1"; // nombre bd
$bduser="root"; // user mysql
$bdpass=""; //contraseña del user mysql

$user = $_POST['user'];
$pass = $_POST['pass'];
$ssql="SELECT * FROM usuarios WHERE user='$user'";
$link=mysql_connect($srv,$bduser,$bdpass);
$result=mysql_db_query($bdname,$ssql,$link);
if(!mysql_num_rows($result)){
echo "Usuario desconocido.";
} else {
$rs=mysql_fetch_array($result);
if($rs["pass"]==$pass ){
$SESSION["login"]=$user;
$SESSION["nombre"]=$rs["nombre"];
$SESSION["email"]=$rs["email"];
session_register("SESSION");
header("location: user.php");
} else {
echo "Password no valido.";
}

}

?>


Finalmente vamos a crear la pagina protegida, desde la cual se accedera una vez estes registrado e identificado:

pagina_protegida.php:
<?
session_start();
if(!isset($SESSION)){
header("location: form_identificacion.php");
} else {
echo "Hola " . $SESSION['user'] . ", este es un contenido privado!";
}
?>

Y para complementar este sistema crearemos el archivo desconexion.php que permitira al usuario salir del sistema de forma segura, para evitar que futuros usuarios usen su cuenta.

desconexion.php:
<?
session_start();
if(!isset($SESSION)){
header("location: form_identificacion.php");
} else {
session_unset();
session_destroy();
//LOGOUT
header("location: form_identificacion.php");
}
?>


Bueno esto ha sido todo, si desean dejar algun comentario haganlo libremente, aceptare criticas y dudas ;)

Saludos!

7 comentarios:

albert dijo...

como estan, soy nuevo en esto de la programacion web.
Yo estoy haciendo el registro y validacion de usuarios como lo colocastes, el problema es que cuando me registro me envia a una pagina totalmente en blanco.
Las dos unicas q se ven son las que tienen los formularios. ahh otra cosa en el codigo de for_identificacion esta un llamado a comprueba.php.

Por favor si me podrian aydar se lo agradeceria.

Unknown dijo...

lo mismo ke albert falta el archivo comprueba.php si pudieras
ponerlo te lo agradeceria kaleta

j.aguilo dijo...

por lo que veo, entiendo que en realidad comprueba.php tiene que hacer la función de valida_login.php, es decir, si cambias comprueba.php por valida_login.php os debería funcionar... voy a comprobarlo yo mismo y os confirmo... un saludo

estilofonia dijo...

me funciono muy bien hasa el registro luego en la parte del login no me funciono
sale unphp q se llama user.php y ese no esta en la explicacion seria bueno que arreglaran este tutorial

_Inuyasha_ dijo...

Wenas ya una cosa k no entiendo, en esta parte $rs=mysql_fetch_array($result);
if($rs["pass"]==$pass ){
$SESSION["login"]=$user;
$SESSION["nombre"]=$rs["nombre"];
$SESSION["correo"]=$rs["correo"];
session_register("SESSION");
header("location: index.php");
} else {
echo "Password no valido.";
}
}
?>
que representa k ace? ami solo me da "Password no valido"
necesito una ayudita plz tnx :)

thespeed94 dijo...

$rs=mysql_fetch_array($result);
if($rs["pass"]==$pass ){
$SESSION["login"]=$user;
$SESSION["nombre"]=$rs["nombre"];
$SESSION["correo"]=$rs["correo"];
session_register("SESSION");
header("location: index.php");
} else {
echo "Password no valido.";
}
}
?>

Esta parte informa que el usuario está logueado

sobre todo para la pagina protegida

thespeed94 dijo...

en header("location: index.php");

tienes que cambiar por
header("location: validar_registro.php");

espero te sirva