Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/08/2009, 17:30
Avatar de pato12
pato12
 
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 16 años, 7 meses
Puntos: 101
[APORTE] ¿ Que es y como puedo hacer un sistema de usuario ?

Hola,
Para dejar de resivir mensajes de como hacer un sistema de usuario, le ago una guia

¿ Que es un sistema de usuario ?
Basicamente es reconocer al usuario en cualquiera parte de tu web, para eso podemos usar sessiones o cookies ( entre otras opciones ). El usuario deve tener su id unico ( sino, no vamos a saber quien es ).

¿ Como se hace un sistema de usuario ?
Si pienzas que es dificil, olvidalo, no es dificil . Es simple, ya lo veras.

Cita:
OJO: Al siguiente codigo le falta la seguridad, puedes usar las funciones addslashes, htmlentities y trim para ponerle mas seguridad
En este tutorial voy a usar las sessiones, porque son mas seguras que las cookies ( ya que las cookies se pueden modificar ).
Primero vamos a la bd, a crear la tabla. La tabla puede ser como esta:
Código sql:
Ver original
  1. CREATE TABLE `users` (
  2. `id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
  3. `nick` VARCHAR( 100 ) NOT NULL ,
  4. `clave` VARCHAR( 100 ) NOT NULL ,
  5. `email` VARCHAR( 100 ) NOT NULL
  6. ) ENGINE = MYISAM ;

Despues creamos un archivo de conexion a la bd y creacion de la session, lo llamare config.php ( porque tiene las configuraciones, tambien lo pueden llamar de la manera que quieran ). En este podremos:
Código php:
Ver original
  1. <?php
  2. session_start(); // Iniciamos la session, es muy importante esto.
  3. // Aqui definiremos los datos de conexion, en un array.
  4. $conexion_dat['host'] = "localhost"; // Aqui pondremos el ip o host de la bd
  5. $conexion_dat['usuario'] = "root"; // Aqui ponemos el usuario de la bd
  6. $conexion_dat['clave'] = ""; // Aqui ponemos la clave de la bd
  7. $conexion_dat['bd'] = "base_de_datos"; // Aqui ponemos la bd
  8.  
  9. $conexion=mysql_connect($conexion_dat['host'],$conexion_dat['usuario'],$conexion_daton['clave']) or die(mysql_error()); // Aqui conectamos a la bd, si falla ( or die ), mostramos el error que nos da mysql_error()
  10. $bd_conect=mysql_select_db($conexion_dat['bd'],$conexion) or die(mysql_error()); // Aqui nos conectamos a la bd, llo mismo que arriba si falla.
  11. ?>
Despues nesesitamos el formulario de login, para eso creamos un archivo llamado login.html ( tambien lo pueden llamar de otra manera y otro formato como php ):
Código html:
Ver original
  1. <form name="login_form" method="post" action="entrar.php">
  2.  <label> Usuario:
  3.     <input type="text" name="usuario" id="usuario"></label>
  4.     <br>
  5.    <label> Clave:
  6.     <input type="password" name="clave" id="clave">
  7.   <br>
  8.   <label>
  9.     <input type="submit" name="button" id="button" value="Entrar">
  10.   </label>
  11. </form>
Despues creamos el archivo que va a reconoser al usuario, lo llamaremos entrar.php ( pueden llamarlo de otra forma, pero modifique en el formulario el nombre ):
Código php:
Ver original
  1. <?php
  2. include('config.php'); // Incluimos la conexion a la bd y la session
  3.  
  4. $user=$_POST['usuario'];
  5. $clave=$_POST['clave'];
  6.  
  7. $consulta="SELECT * FROM users WHERE nick='".$user."' AND clave='".$clave."'"; // Selecionamos el nick y la clave
  8. $consultar=mysql_query($consulta,$conexion) or die(mysql_error()); // En el primer parametro ponemos la consulta, y en el segundo ponemos la conexion a la bd
  9. if(mysql_num_rows($consultar)==1){ // mysql_num_rows sirve para saber cuantos resultados devolvio la consulta
  10.     // Si devolvio 1 resultado, es que los datos del usuario estan bien, porque selecionamos de la bd el nick y la clave.
  11.     // es casi imposible que devuelva mas de 1, porque deven aver 2 personas que se registren con el mismo nick y clave, pero ya
  12.     // vamos a evitar eso en el registro
  13.    
  14.     $_SESSION['usuario']=$user; // Creamos la session y le damos un dato para que lo guarde, con esta session identificamos al usuario en cualquier parate de la web.
  15.    
  16.     echo "Se a logeado correctamente como ".$user;
  17. }else{ // Sino devolvio 1 resultado
  18.     echo "Datos inconrrectos. Intente denuevo.";
  19. }
  20. ?>
Despuse crearemos el form de registro, lo llamaremos registro.html (tambien puede ser de otra manera y extencion), como este:
Código html:
Ver original
  1. <form name="register_form" method="post" action="registrar.php">
  2.  <label> Usuario:
  3.     <input type="text" name="user" id="user"></label>
  4.     <br>
  5.  <label>  Clave:
  6.     <input type="password" name="clave" id="clave"></label>
  7.     <br>
  8.   <label> Email:
  9.     <input name="email" type="text" id="email"></label>
  10.     <br>
  11.   <label>
  12.     <input type="submit" name="entra" id="button" value="Entrar">
  13.   </label>
  14. </form>
Despues crearemos el archivo registrar.php:
Código php:
Ver original
  1. <?php
  2. include('config.php'); // Incluimos la conexion a la bd y la session
  3.  
  4. $user=$_POST['usuario'];
  5. $clave=$_POST['clave'];
  6. $email=$_POST['email'];
  7.  
  8. $consulta="SELECT * FROM users WHERE nick='".$user."'"; // Selecionamos el nick, para comprobar si existe
  9. $consultar=mysql_query($consulta,$conexion) or die(mysql_error()); // Consultamos
  10. if(mysql_num_rows($consultar)==1){ // Si devuelve 1 registro, ya existe el usuario
  11.     echo "Usuario ya existente.";
  12. }else{ // Si no...
  13.     $consulta_reg="INSERT INTO users (nick,clave,email) VALUES ('".$user."','".$clave."','".$email."')";
  14.     $consultar_reg=mysql_query($consulta_reg,$conexion) or die(mysql_error()); // Creamos el usuario
  15.     echo "Usuario registrado correctamente.";
  16. }
  17. ?>
Ahora creamos el archivo salir.php:
Código php:
Ver original
  1. include('config.php'); // Incluimos la conexion a la bd y la session
  2.  
  3. unset($_SESSION['usuario']); // Borramos la session
  4. echo "Chau!";
Terminamos nusetro sistema de usuario

Ahora, solo falta saber cuanto esta logeado y cuando no. Para eso en el archivo index.php ( o puede ser otro), incluimos el archivo config.php:
Código php:
Ver original
  1. include('config.php'); // Incluimos la conexion a la bd y la session
Esto es importante para que no se pierda la session. Hay que incluirlo en cada pagina que queramos saber si esta logeado. Y por ultimo para saber si esta logeado, esto ( oviamente tiene que estar el include de config.php ):
Código php:
Ver original
  1. if(isset($_SESSION['usuario'])){ // isset sirve para saber si existe la session.
  2. echo "Estas logeado";
  3. }else{
  4. echo "No estas logeado!";
  5. }
Es un simple isset que sirve para saber si existe una variable ( devuelve true si existe o false si no existe ).

Bueno,, eso es todo

Espero que le alla servido.
Salu2

PD: No probe el codigo xD, lo ise mientras escribia el tutorial.
__________________
Half Music - www.halfmusic.com

Última edición por pato12; 07/08/2009 a las 12:05 Razón: Aclarar seguridad