Ver Mensaje Individual
  #5 (permalink)  
Antiguo 19/02/2010, 14:20
Avatar de cesarpunk
cesarpunk
 
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 17 años
Puntos: 9
Respuesta: agregar métodos de otra clase

gracias por tu respuesta , lo he cambiado asi:

Código PHP:
/*Incluimos el fichero de la clase Db*/
require_once 'dbConfig/Db.class.php';
/*Incluimos el fichero de la clase Conf*/
require_once 'dbConfig/Conf.class.php';

/* Clase encarga de gestionar al usuario */
class Users
     private 
$db;
     private 
$sql
     private 
$result;
     private 
$num;
     private 
$userID;
     static 
$_instance;     
        
     public function 
__construct(){
             
session_start();
            
$this->getDbConecction();
     }
 
     public function 
getDbConecction($params null) {
            if(
$this->db === null) {
                
$this->db Db::getInstance($params);
            }
            return 
$this->db;
     }
     
     public static function 
getInstance(){
            if (!(
self::$_instance instanceof self)){          
                
self::$_instance=new self();
            }       
            return 
self::$_instance;
     }
     
//Método login de los USUARIOS
     
public function login($usuario$password){ 
        
         
$sql="SELECT * FROM...";
        
$result=$this->db->ejectutar($sql);
        
$num=$this->db->numero_registros($result); 
        
        if(
$num 0){
            
$sql="SELECT * FROM ...";
            
$result=$this->db->ejecutar($sql);
            
$num=$this->db->numero_registros($result);
    
            if(
$num>0){
                    while (
$x=$this->db->obtener_fila($result,0)){
                        
$userID=$x['user_id']; 
                    }        
                    
$_SESSION["userID"]=$userID;
                    return 
1;
                    
            }
            else{
/*error de contraseña*/ return 0;}
        }
        else{
/*error de usuario*/ return 0;}
     } 
     
    public function 
getUserSession(){ 
        return 
$_SESSION["userID"]; 
    } 


y

Código PHP:
/*Incluimos el fichero de la clase Users*/
require_once 'lib/Users.class.php';
session_start();
//Invocamos al objeto usuario
$objUsers=new Users();
//Obtenemos los datos introducidos por el usuario
$usuario=$_POST["usuario"];   
$password=$_POST["password"]; 
//comprobamos si existe
$existe_Usuario=$objUsers->login($usuario,$password); 
Edito: fue un error de digitación....y me falto poner la funcion getInstance() en el contructor... ahora si me funciona!!!!! muchas gracias !!!!

Edito2: Una ultima cosilla.... en un post anterior me pasaron una función para limpiar las cadenas antes de ponerlas en los query... esta tambien está en la clase Db:

Código PHP:
//Método de seguridad de cadenas
     
public function setSecure($string){ 
        if(
is_string($string)){
            
$this->cadena mysql_real_escape_string(stripslashes(trim($string)));
            return 
$this->cadena;
        }
     } 
Y las invoco en la funcion login de la clase Users:

Código PHP:
     public function login($usuario$password){ 
     
        
/*sanamos cadenas*/
        
$usuario $this->db->setSecure($usuario);
        
$password $this->db->setSecure($password);
        
                
$sql "SELECT * FROM...";
        
$result $this->db->ejecutar($sql);
        
$num $this->db->numero_registros($result); 
        
        if(
$num 0){
            
$sql "SELECT * FROM...";
            
$result $this->db->ejecutar($sql);
            
$num $this->db->numero_registros($result);
    
            if(
$num>0){
                    while (
$x $this->db->obtener_fila($result,0)){
                        
$userID=$x['user_id']; 
                    }        
                    
$_SESSION["userID"]=$userID;
                    return 
1;
                    
            }
            else{
/*error de contraseña*/ return 0;}
        }
        else{
/*error de usuario*/ return 0;}
     } 
Pero cuando pongo esto me sale el error: Fatal error: Call to undefined method Db::setSecure() on line 60 .... porque?
__________________
Quitenme la vida pero no la bebida.

Última edición por cesarpunk; 19/02/2010 a las 15:07