Bueno primeramente este codigo no es mio, lo encontre en un topic de por aqui pero ya no lo encuentro :?
bueno, crearemos varios archivos el primero sera:
config.php<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Page title</title>
</head>
<body>
<?
$dbhost="*********************"; //Host del mysql
$dbuser="*************"; //Usuario del mysql
$dbpass="******"; //Password del mysql
$db="*********"; //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();
?>
</body>
</html>
Tienes que llenar lo de dbhost y dbpassword con los datos que te dan en tu base de datos (debes crear la base primero)
luego creamos otro archivo llamado
Registrar.php<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Page title</title>
</head>
<body>
<?
include('config.php'); //incluimos el config.php que contiene los datos de la conexión a la db
//Comprobamos que los campos nick, pass y pass1 se han rellenado en el form de reg.php, sino volvemos al form
if(($_POST[nick] == ' ') or ($_POST[pass] == ' ') or ($_POST[pass1] == ' ') )
{
Header("Location: reg.php"); //enviamos al form de registro que esta en reg.php
}else{
//Comprobamos que la pass y pass1 son iguales, sino, volvemos a reg.php
if($_POST[pass] != $_POST[pass1])
{
echo 'Las passwords no son iguales';
}else{
//quitamos el codigo malicioso de $_POST[nick] y $_POST[pass]
$user = stripslashes($_POST["nick"]);
$user = strip_tags($user);
$pass = stripslashes($_POST["pass"]);
$pass = strip_tags($pass);
//comprobamos que el usuario no existe en la db
$usuarios=mysql_query("SELECT nick FROM users WHERE nick='$user' ");
if($user_ok=mysql_fetch_array($usuarios))
{
echo 'El usuario ya esta registrado';
mysql_free_result($usuarios); //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"]);
$email = strip_tags($email);
$rollo = stripslashes($_POST["rollo"]);
$rollo = strip_tags($rollo);
$rollo = str_replace("\n\r","
",$rollo); //se cambian los saltos de linea por
$rollo = str_replace("\r\n","
",$rollo);
$rollo = str_replace("\n","
",$rollo);
$fecha = time();
$level = "2"; //usaremos level 1 para admins, level 2 para los demas (se cambia manualmente desde phpmyadmin)
//introducimos el nuevo registro en la tabla users
mysql_query("INSERT INTO users (nick,pass,email,fecha,level,rollo) values ('$user','$pass','$email','$fecha','$level','$rollo') ");
echo 'Usuario registrado con éxito';
}
}
}
?>
</body>
</html>
luego un archivo llamado
reg.php<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Page title</title>
</head>
<body>
<?
include('config.php'); //incluimos el config.php que contiene los datos de la conexión a la db
//Creamos el form k irá a registrar.php para comprobar y introducir los datos a la tabla users
echo '<form action="registrar.php" method="POST">
Nick: <input type="text" name="nick" size="30">
Password: <input type="password" name="pass" size="30" >
Repetir Password: <input type="password" name="pass1" size="30" >
email: <input type="text" name="email" size="50">
Rollo: <textarea name="rollo" cols="30" rows="10"></textarea>
<input type="submit" name="submit" value="Enviar"></form>';
?>
</body>
</html>
luego un archivo llamado
autentificar.php<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Page title</title>
</head>
<body>
<?
include('config.php'); //incluimos el config.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 tienen contenido
{
Header("Location: login.php"); //estan vacías, 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]' ");
if($user_ok = mysql_fetch_array($usuarios)) //si existe comenzamos con la sesion, si no, al index
{
session_register("usuario"); //registramos la variable usuario que contendrá el nick del user
session_register("idusuario"); //registramos la variable idusuario que contendrá la id del user
session_register("level"); //registramos la variable level que contendrá el level del user
//damos valores a las variables de la sesión
$_SESSION[usuario] = $user_ok["nick"]; //damos el nick a la variable usuario
$_SESSION[idusuario] = $user_ok["id"]; //damos la id del user a la variable idusuario
$_SESSION[level] = $user_ok["level"]; //damos el level del user a la variable level
Header("Location: login.php"); //volvemos al login donde nos saldrá nuestro menú de usuario
}else{
echo 'Nick y pass incorrectos';
}
}
?>
</body>
</html>
luego otro llamado
login.php<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Page title</title>
</head>
<body>
<?
include('config.php'); //incluimos el config.php que contiene los datos de la conexión a la db
if(!isset($_SESSION[usuario]) ) //comprobamos que no existe la session, es decir, que no se ha logeado, y mostramos el form
{
//Creamos el form k irá a autentificar.php para comprobar los datos con la tabla users
echo '<form action="autentificar.php" method="POST">
Nick: <input type="text" name="nick" size="30">
Password: <input type="password" name="pass" size="30" >
<input type="submit" name="submit" value="Enviar"></form>';
}else{
//SI se ha logeado, mostramos el nick y la opción de deslogearse
//Este sería el menú que saldría a la gente que esta logeada, se puede modificar y añadir cosas
echo 'Bienvenido '.$_SESSION[usuario]; //ej Bienvenido Juan
echo '
Tu level es '.$_SESSION[level]; //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, por lo tanto no se le mostrará)
//*Nota2: para cambiar el level a 1, se tiene k hacer manualmente por phpmyadmin
echo '
<a href=paginaprivada.php>Ir a pagina privada</a>';
}
echo '
<a href=logout.php>Salir</a>'; //link para deslogearse, iría a logout.php
}
?>
</body>
</html>
y alfinal uno llamado
logout<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Page title</title>
</head>
<body>
<?
include('config.php'); //incluimos el config.php que contiene los datos de la conexión a la db y la sesión
session_destroy(); //destruimos la sesion
Header("Location: login.php"); //volvemos al login.php
?>
</body>
</html>
Con esto tendras un sistema de registro de usuario con niveles ademas debes dejar un espacio en tu web para poner el codigo de login... ya que con este se daran de alta o registraran :wink: