Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/09/2011, 08:53
Avatar de Eleazan
Eleazan
 
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 1 mes
Puntos: 326
Clase 'users'. ¿Es correcta?

Buenas,

He decidido, poco a poco, ir haciendo cositas en POO... asiq, como resultado de eso, y del uso de Slim, Paris, e Idiorm, me he creado una clase "Users" para manejar los usuarios... o almenos, lo básico (crear, loguear, autentificar).

Y la verdad, yo creo q está bien hecha (en cuanto a POO, sé que queda aún validación!)

Asiq, si no es mucha molestia, la pongo aqui, y si veis algo mal hecho en POO, decídmelo!

Código PHP:
<?php

class Users extends Model {
    
    private 
$_islog false;
    
    public function 
getUser($dni) {
        return 
$this->factory('Users')->where('dni'$dni)->find_one();
    }
    
    public function 
logout() {
        
//Borramos las cookies
        
setcookie('login','');
    
setcookie('rol','');
        
setcookie('user''');
        
//El mismo borrará los datos de la sesion al recargar la pag!
    
    //session_unset();
    
}
    
    public function 
islog() {
        return 
$this->_islog;
    }
    
    
//Método para loguear en el sistema
    
public function login($dni$pass) {
        
$user $this->getUser($dni);
        if(!
$user) return false//No existe el usuario!
        
if(md5($pass) == $user->pass) {
            
$cook $user->dni;
            
$cook.= $user->pass;
            
$rol $user->rol;
            
$cookie=md5($cook.$_SERVER["REMOTE_ADDR"].$rol.'pAlABRAmagica');
            
setcookie('login',$cookie);
            
setcookie('user',$user->dni);
            
setcookie('rol',$rol);
            
            return 
$this->getUser($dni);
        }
        else return 
false;
                
    }
    
    
//Método para, con dos valores de las cookies, comprobar si es correcto!
    
public function auth($dni$login) {
        
        
$userN Model::factory('Users')->where_equal('dni'$dni)->find_one(); //->where_equal('pass', $pass)
        
if( $userN ) { //Exists
            
            
if(isset($_COOKIE['rol'])) $rol $_COOKIE['rol'];
            else 
$rol '';
            
$cookie md5($dni.$userN->pass.$_SERVER["REMOTE_ADDR"].$rol.'pAlABRAmagica');
            if(
$cookie == $login) {
                
$this->cloneU($userN);
                
$this->_islog true;
                return 
true;
                
                }
            else {
                
$this->logout();
                return 
false;
            }
        }
        else {
            
$this->logout();
            return 
false;
        }
    }
    
    private function 
cloneU($u) {
        
$this->dni $u->dni;
        
$this->id $u->id;
        
$this->pass $u->pass;
        
$this->control $u->control;
        
$this->rol $u->rol;
        
$this->email $u->email;
        
$this->apellidos $u->apellidos;
        
$this->nombre $u->nombre;
        
    }
   
    public function 
register($nombre$apellidos$pass$mail$dni ) {
        
        
//Se carga otra instancia, pq sino sobreescribiria la que está activa y logueada... y eso NO interesa :)
        
$u Model::factory('Users')->create();
        
        
$u->nombre $nombre;
        
$u->apellidos $apellidos;
        
$u->pass md5($pass);
        
$u->email $mail;
        
$u->dni $dni;
        
$u->rol 'user';
        
        
        return 
$u->save();
    }
    
}
Un saludo, y gracias :)
__________________
>> Eleazan's Source
>> @Eleazan