Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/01/2013, 15:28
vicluber
 
Fecha de Ingreso: agosto-2009
Mensajes: 51
Antigüedad: 14 años, 9 meses
Puntos: 1
Asegurar mis clases.

Buenas tardes che!

Por favor me dan una mano... que fallas en cuanto a seguridad tengo en mis clases? Soy medio nuevo, novato, principiante.

Conecto a mis bases de datos con mi claseBaseDatos.php que es esta...

Código PHP:
<?php
class BaseDatos {
 private 
$HOSTNAME;
 private 
$BASEDATOS;
 private 
$USUARIO;
 private 
$CLAVE;
 private 
$CONEXION;
 private 
$QUERY;
 private 
$RESULT;
 private 
$ERROR;
/**
 * Constructor de la clase que inicia ls variables instancias de la clase
 * vinculadas a la coneccion con el Servidor de BD
 */
 
public function __construct(){
 
$this->HOSTNAME "localhost";
 
$this->BASEDATOS "registro";
 
$this->USUARIO "root";
 
$this->CLAVE"toor";
 
$this->RESULT=0;
 
$this->QUERY="";
 
$this->ERROR="";
 }
/**
 * Funcion que retorna una cadena
 * con una peque�a descripcion del error si lo hubiera
 *
 * @return cadena
 */
 
public function getError(){
 return 
$this->ERROR;


 }


/**
 * Inicia la coneccion con el Servidor y la Base Datos Mysql.
 * Retorna true si la coneccion con el servidor se pudo establecer y false en caso contrario
 *
 * @return boolean
 */
 
public function Iniciar(){
 
$conexion mysql_connect($this->HOSTNAME,$this->USUARIO,$this->CLAVE);
 if (
$conexion){
 if (
mysql_select_db($this->BASEDATOS,$conexion)){
 
$this->CONEXION $conexion;
 unset(
$this->QUERY);
 unset(
$this->ERROR);
 return 
true;
 } else {
 
$this->ERROR mysql_errno($conexion) . ": " mysql_error($conexion);
 return 
false;
 }
 }else{
 
$this->ERROR mysql_errno($conexion) . ": " mysql_error($conexion);
 return 
false;
 }
 }


/**
 * Ejecuta una consulta en la Base de Datos.
 * Recibe la consulta en una cadena enviada por parametro.
 *
 * @param cadena $consulta
 * @return boolean
 */
 
public function Ejecutar($consulta){
 unset(
$this->ERROR);
 
$this->QUERY $consulta;
 if( 
$this->RESULT mysql_query($consulta)){
 return 
true;
 } else {
 
$this->ERROR =mysql_errno$this->CONEXION) . ": " mysql_error$this->CONEXION);
 return 
false;
 }
 }


/**
 * Devuelve un registro retornado por la ejecucion de una consulta
 * el puntero se despleza al siguiente registro de la consulta
 *
 * @return unknown
 */
 
public function Registro() {


 if (
$this->RESULT){
 if(
$temp mysql_fetch_assoc($this->RESULT)) {
 return 
$temp;
 }else{
 
mysql_free_result($this->RESULT);
 return 
false;
 }
 }else{
 
$this->ERROR mysql_errno($this->CONEXION) . ": " mysql_error($this->CONEXION);
 return 
false;
 }
 }


/**
 * Devuelve el id de un campo autoincrement utilizado como clave de una tabla
 * Retorna el id numerico del registro insertado, devuelve null en caso que la ejecucion de la consulta falle
 *
 * @param cadena $consulta
 * @return id de la tupla insertada
 */
 
public function devuelveIDInsercion($consulta){
 unset(
$this->ERROR);
 
$this->QUERY $consulta;
 if (
$this->RESULT mysql_query($consulta)){
 
$id mysql_insert_id();
 return 
$id;
 } else {
 
$this->ERROR =mysql_errno$this->CONEXION) . ": " mysql_error$this->CONEXION);
 return 
null;
 }
 }


}
?>
Y la utilizo desde mis otras clases como por ejemplo para abm de una tabla de usuarios... mi claseUsuarios.php

En esta clase uno de mis errores es no comprobar si los id_usuario son enteros, no es cierto? Hay mas problemas?

Una vez leí que tenia que comprobar si el objeto BaseDatos no existia antes de crearlo... esto por que es?

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;

    public function 
__construct(){
        
$this->idusuario "";
        
$this->nombre "";
        
$this->apellido "";
        
$this->usuario "";
        
$this->pass "";
        
$this->rol "";
        
$this->email "";
        
$this->telefono "";
    }
    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 
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 
Agregar(){
        
$base=new BaseDatos();
        
$consultaInsertar="INSERT INTO usuarios (id_usuario, nombre, apellido, usuario, pass, rol, email, telefono) VALUES ('".$this->getIdUsuario()."', '".$this->getNombre()."', '".$this->getApellido()."', '".$this->getUsuario()."', '".$this->getPass()."', '".$this->getRol()."', '".$this->getEmail()."', '".$this->getTelefono()."')";
        if(
$base->Iniciar()){

            if(
$base->Ejecutar($consultaInsertar)){                 
                return 
true;

            }    else {
                echo 
$base->getError();
                    return 
false;
                    
            }

        } else {
            echo 
$base->getError();
            return 
false;
            
        }
        
    }
    public function 
Buscar($id_usuario){
        
$base=new BaseDatos();
        
$consultaUsuario="SELECT * FROM usuarios WHERE id_usuario=".$id_usuario;
        
        if(
$base->Iniciar()){
            if(
$base->Ejecutar($consultaUsuario)){
                if(
$row2=$base->Registro()){
                    
                    
$this->setIdUsuario($row2['id_usuario']);
                    
$this->setNombre($row2['nombre']);
                    
$this->setApellido($row2['apellido']);
                    
$this->setUsuario($row2['usuario']);
                    
$this->setRol($row2['rol']);
                    
$this->setEmail($row2['email']);
                    
$this->setTelefono($row2['telefono']);
                    
                    return 
true;
                }                
            
             }    else {
                 echo 
$base->getError();
                 return 
false;
                 
            }
         }    else {
             echo 
$base->getError();
             return 
false;
             
         }            
    }
    public static function 
Listar($condicion){
        
$base=new BaseDatos();
        
$consultaListar="SELECT * FROM usuarios ";
        if (
$condicion!=""){
            
$consultaListar.=' WHERE '.$condicion;
        }
        
$consultaListar.=" ORDER BY id_usuario ";
        
        if(
$base->Iniciar()){
            if(
$base->Ejecutar($consultaListar)){                
                
$arreglo= array();
                while(
$row2=$base->Registro()){
                    
                    
$id_usuario= ($row2['id_usuario']);
                    
$nombre = ($row2['nombre']);
                    
$apellido = ($row2['apellido']);
                    
$nombre_usuario = ($row2['usuario']);
                    
$pass = ($row2['pass']);
                    
$rol = ($row2['rol']);
                    
$email = ($row2['email']);
                    
$telefono = ($row2['telefono']);
                
                    
$usuario=new Usuario();
                    
$usuario->cargar($id_usuario$nombre$apellido$nombre_usuario$pass$rol$email$telefono);
                    
array_push($arreglo,$usuario);
    
                }
                return 
$arreglo;
            
             }    else {
                 echo 
$base->getError();
                 return 
false;
                 
            }
         }    else {
             echo 
$base->getError();
             return 
false;
             
         }            
    }
    public function 
Eliminar(){
        
        
$base=new BaseDatos();
        if(
$base->Iniciar()){
            
$consultaBorra="DELETE FROM usuarios WHERE id_usuario=".$this->getIdUsuario();
        
            if(
$base->Ejecutar($consultaBorra)){
                    return 
true;
            }else{
                    echo 
$base->getError();
                    return 
false;
                    
                }            
        }else{
            echo 
$base->getError();
            return 
false;
            
        }
    }
    
    public function 
Actualizar(){
        
$base = new BaseDatos();
        
$consultaModifica="UPDATE usuarios SET nombre='".$this->getNombre()."', apellido='".$this->getApellido()."', usuario='".$this->getUsuario()."', pass='".$this->getPass()."', rol='".$this->getRol()."', email='".$this->getEmail()."', telefono='".$this->getTelefono()."' WHERE id_usuario="$this->getIdUsuario();
        if(
$base->Iniciar()){
            if(
$base->Ejecutar($consultaModifica)){
                return 
true;
            }else{
                echo 
$base->getError();
                return 
false;
                
            }
        }else{
            echo 
$base->getError();
            return 
false;
            
        }
    }
}
?>

Saludos! Gracias!!