Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/09/2009, 22:15
Avatar de pato12
pato12
 
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 17 años, 2 meses
Puntos: 101
[APORTE] Como separar usuarios normales, de administradores

Hola,
Esto es uno de los temas que mas me contactan por mp :P
Ahora les voy a explicar como hacerlo, enbase a http://www.forosdelweb.com/f18/aport...suario-725268/

Para empezar, vamos a nesesitar una fila mas en la tabla ( donde vamos a tener el rango del usuario ), por ejemplo rank:
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. `rank` INT( 1 ) NOT NULL ,
  6. `email` VARCHAR( 100 ) NOT NULL
  7. ) ENGINE = MYISAM ;
Hay pondremos el rango numericamente, por ejemplo:
Código:
0: Usuario desactiva, no activo su cuenta (opcional)
1: Usuario normal, cuanta activada
5: Usuario baneado (opcional)
8: Usuario adminitrador
etc..
Lo unico que tendriamos que editar, es entrar.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.  
  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.     $datos=mysql_fetch_array($consultar); // Recojemos los datos del usuario
  15.    
  16.     switch($datos['rank']){
  17.         case 0: // Si el rank es 0, la cuenta esta desactivada
  18.             die("Tu usuario no esta activado!");
  19.         break;
  20.         case 5: // Si el rank es 5, la cuenta esta baneada
  21.             die("Tu usuario fue banneado de aqui!");
  22.         break;
  23.         case 8: // Si es 8, es un administrador
  24.             $_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.
  25.             $_SESSION['administrador']='on'; // Creamos la session del administrador, para saber mas tarde.
  26.            
  27.             echo "Hola adminitrador!";
  28.         break;
  29.         default: // Si no es ninguno de los otros, es usuario normal
  30.             $_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.
  31.             echo "Se a logeado correctamente como ".$user;
  32.         break;
  33.     }
  34.        
  35. }else{ // Sino devolvio 1 resultado
  36.     echo "Datos inconrrectos. Intente denuevo.";
  37. }
  38. ?>
Recuerden definir al registrar, el rango( rank ) de usuario.

Para implementarlo en Easy Login:
Código php:
Ver original
  1. <?php
  2. include('EasyLogin 3-0.php');
  3. $sis = new EasyLogin(array("localhost","root","","base_de_datos"),'users',array('nick','clave'));
  4.  
  5. $usuario = 'demo_user'; // Usuario a registrar
  6. $clave = 'demo'; // Clave del usuario
  7.  
  8. if($sis->loginUser($usuario,$clave)){
  9.     $datos=$sis->dataUser($usuario);
  10.     switch($datos['rank']){
  11.         case 0: // Si el rank es 0, la cuenta esta desactivada
  12.             die("Tu usuario no esta activado!");
  13.         break;
  14.         case 5: // Si el rank es 5, la cuenta esta baneada
  15.             die("Tu usuario fue banneado de aqui!");
  16.         break;
  17.         case 8: // Si es 8, es un administrador
  18.             $_SESSION['usuario']=$usuario; // Creamos la session y le damos un dato para que lo guarde, con esta session identificamos al usuario en cualquier parate de la web.
  19.             $_SESSION['administrador']='on'; // Creamos la session del administrador, para saber mas tarde.
  20.            
  21.             echo "Hola adminitrador!";
  22.         break;
  23.         default: // Si no es ninguno de los otros, es usuario normal
  24.             $_SESSION['usuario']=$usuario; // Creamos la session y le damos un dato para que lo guarde, con esta session identificamos al usuario en cualquier parate de la web.
  25.             echo "Se a logeado correctamente como ".$usuario;
  26.         break;
  27.     }  
  28. }else{
  29.     echo "Usuario o clave incorrecto";
  30. }
  31.  
  32.  
  33. $sis->closedBD(); // Cerramos la conexion a la bd
  34. ?>
Haci de facil!

Bueno eso es todo el tutorial :P
Espero que les ayude..
Salu2

PD: Recuerden el tema de seguridad.. yo no probe el codigo, lo hice mientras escribia el tutorial
__________________
Half Music - www.halfmusic.com

Última edición por pato12; 19/12/2009 a las 20:48