Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/01/2013, 17:39
vicluber
 
Fecha de Ingreso: agosto-2009
Mensajes: 51
Antigüedad: 14 años, 8 meses
Puntos: 1
Clases para tabla usuarios y conexion a base de datos PDO. Seguras?

Buenas... hace un par de dias postee mi clase para conectarme y ejecutar sentencias en mysql y me recomendaron que usara PDO ya que mysql* queda obsoleta... ademas de las ventajas que tiene PDO.

Así fue que logre conectarme a la base de datos y manejarla desde mi clase usuarios (en este caso)

Me gustaria que me comentaran si lo estoy haciendo de forma aceptable...
Funcionar... funciona, hasta ahora me sirve y me resulta bastante comodo... pero es seguro y practico?

Esta clase es solo para obtener los datos para la conexion.

Código PHP:
<?php
class ConfigBD{
    public 
$DBServer;
    public 
$DBName;
    public 
$UserName;
    public 
$Password;
    function 
__construct(){
        
$this->DBServer='localhost';
        
$this->UserName='root';
        
$this->Password='toor';
        
$this->DBName='db';
    }
}
?>
Código PHP:
<?php
include_once 'claseConfigDB.php';

class 
db{
    
/*** Declare instance ***/
    
private static $instance NULL;
     
    
/**
     *
     * the constructor is set to private so
     * so nobody can create a new instance using new
     *
     */
    
private function __construct() {
        
/*** maybe set the db name here later ***/
    
}
     
    
/**
     *
     * Return DB instance or create intitial connection
     *
     * @return object (PDO)
     *
     * @access public
     *
     */
    
public static function getInstance() {
         
        if (!
self::$instance)
        {
            
$conexion = new ConfigBD();
            
self::$instance = new PDO("mysql:host=$conexion->DBServer;dbname=$conexion->DBName",$conexion->UserName,$conexion->Password);; //asi funciona y con variables NO.
            
self::$instance-> setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
        }
        return 
self::$instance;
    }
     
    
/**
     *
     * Like the constructor, we make __clone private
     * so nobody can clone the instance
     *
     */
    
private function __clone(){
    }
     
/*** end of class ***/
Y esta es mi clase Usuario para mi tabla de usuarios

Código PHP:
<?php
include_once "claseBaseDatos.php";

class 
Usuario{

    private 
$id_usuario;
    private 
$nombre;
    private 
$apellido;
    private 
$usuario;
    private 
$pass;
    private 
$rol;
    private 
$email;
    private 
$telefono;
    private 
$activo;

    public function 
__construct(){
        
$this->idusuario "";
        
$this->nombre "";
        
$this->apellido "";
        
$this->usuario "";
        
$this->pass "";
        
$this->rol "";
        
$this->email "";
        
$this->telefono "";
        
$this->activo "";
    }
    public function 
cargar($id_usuario null$nombre$apellido$usuario$pass$rol$email$telefono){
        
$this->setIdUsuario($id_usuario);
        
$this->setNombre($nombre);
        
$this->setApellido($apellido);
        
$this->setUsuario($usuario);
        
$this->setPass($pass);
        
$this->setRol($rol);
        
$this->setEmail($email);
        
$this->setTelefono($telefono);
    }
    
    public function 
setIdUsuario($id_usuario){
        
$this->idusuario $id_usuario;
    }
    public function 
setNombre($nombre){
        
$this->nombre=$nombre;
    }
    public function 
setApellido($apellido){
        
$this->apellido=$apellido;
    }
    public function 
setUsuario($usuario){
        
$this->usuario=$usuario;
    }
    public function 
setPass($pass){
        
$this->pass=$pass;
    }
    public function 
setRol($rol){
        
$this->rol=$rol;
    }
    public function 
setEmail($email){
        
$this->email=$email;
    }
    public function 
setTelefono($telefono){
        
$this->telefono=$telefono;
    }
    public function 
setActivo($activo){
        
$this->activo=$activo;
    }
    
    public function 
getIdUsuario(){
        return 
$this->idusuario;
    }
    public function 
getNombre(){
        return 
$this->nombre;
    }
    public function 
getApellido(){
        return 
$this->apellido;
    }
    public function 
getUsuario(){
        return 
$this->usuario;
    }
    public function 
getPass(){
        return 
$this->pass;
    }
    public function 
getRol(){
        return 
$this->rol;
    }
    public function 
getEmail(){
        return 
$this->email;
    }
    public function 
getTelefono(){
        return 
$this->telefono;
    }
    public function 
getActivo(){
        return 
$this->activo;
    }
    
    public function 
agregarUsuario(){
        
$query="INSERT INTO usuarios (id_usuario, nombre, apellido, usuario, pass, rol, email, telefono) VALUES (:id_usuario, :nombre, :apellido, :usuario, :pass, :rol, :email, :telefono)";
        try
        {
            
$comando DB::getInstance()->prepare($query);
            
$rows $comando->execute(array(':id_usuario' => $this->getIdUsuario(), ':nombre' => $this->getNombre(), ':apellido' => $this->getApellido(), ':usuario' => $this->getUsuario(), ':pass' => $this->getPass(), ':rol' => $this->getRol(), ':email' => $this->getEmail(), ':telefono' => $this->getTelefono()));
            if( 
$rows == ){echo 'INSERT correcto';}
        }
        catch(
PDOException $e)
        {
            echo 
'Error: ' $e->getMessage();
        }
    }
    public function 
buscarUsuario($id_usuario){
        
$query "SELECT * FROM usuarios WHERE id_usuario=".(int)$id_usuario;
        
        try {
            
$comando DB::getInstance()->prepare($query);
            
$comando->execute();
            if(
$row $comando->fetch(PDO::FETCH_ASSOC)) {
                
$this->setIdUsuario($row['id_usuario']);
                
$this->setNombre($row['nombre']);
                
$this->setApellido($row['apellido']);
                
$this->setUsuario($row['usuario']);
                
$this->setRol($row['rol']);
                
$this->setEmail($row['email']);
                
$this->setTelefono($row['telefono']);
                
$this->setActivo($row['activo']);
    
                return 
true;
            }else{
                echo 
'No hay resultado para esa consulta';
                return 
false;
            }

        }catch(
PDOException $e){
            echo 
'Error: ' $e->getMessage();
        }
    }
    public static function 
listarUsuarios(){
        
$query "SELECT * FROM usuarios";
        try {
            
$comando DB::getInstance()->prepare($query);
            
$comando->execute();
            
$arreglo = array();
            while( 
$datos $comando->fetch() ) {
                
                
$usuario=new Usuario();
                
$usuario->cargar($datos[0], $datos[1], $datos[2], $datos[3], $datos[4], $datos[5], $datos[6], $datos[7], $datos[8]);
                
array_push($arreglo,$usuario);
            }
            return 
$arreglo;
        }catch(
PDOException $e){
            echo 
'Error: ' $e->getMessage();
        }
    }
    
    public function 
eliminarUsuario(){
        
$query="DELETE FROM usuarios WHERE id_usuario = :id_usuario";
        try
        {
            
$comando DB::getInstance()->prepare($query);
            
$rows $comando->execute(array(':id_usuario' => $this->getIdUsuario()));
            if( 
$rows == ){echo 'DELETE correcto';}
        }
        catch(
PDOException $e)
        {
            echo 
'Error: ' $e->getMessage();
        }
    }
    
    public function 
editarUsuario(){
        try
        {
            
$comando DB::getInstance()->prepare('UPDATE usuarios SET nombre = :nombre, apellido = :apellido, usuario = :usuario, pass = :pass, rol = :rol, email = :email, telefono = :telefono, activo = :activo WHERE id_usuario = :id_usuario');
            
$rows $comando->execute(array(':nombre' => $this->getNombre(), ':apellido' => $this->getApellido(), ':usuario' => $this->getUsuario(), ':pass' => md5($this->getPass()), ':rol' => $this->getRol(), ':email' => $this->getEmail(), ':telefono' => $this->getTelefono(), ':activo' => $this->getActivo(), ':id_usuario' => $this->getIdUsuario()));
            if( 
$rows == ){echo 'UPDATE correcto';}
        }
        catch(
PDOException $e)
        {
            echo 
'Error: ' $e->getMessage();
        }
    }
}
?>
Las dos primeras clases las saque de algun lado... diria de donde pero no me acuerdo, si alguien sabe que le de los creditos jeje.

Gracias por todo saludos!