Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/06/2013, 05:43
CbooT
 
Fecha de Ingreso: agosto-2012
Ubicación: España
Mensajes: 6
Antigüedad: 11 años, 8 meses
Puntos: 0
PHP, DAO e inyección MSQL

Hola a todos,

Estoy desarrollando una aplicación en la que utilizo un patrón dao que me proporciona, para cada clase, una interfaz de:
alta
baja
consulta
modificacion

Vease, para un Usuario tengo los métodos

persistirUsuario
deleteUsuario
getUsuario
modificarUsuario

Hasta ahí todo bien, pues son todo parámetros estrictos, el tema es que a medida que crece la aplicación, necesito la posibilidad recuperar LISTAS de usuarios (por ejemplo, hablo de usuarios como podría hablar de productos, por ejemplo)

No hay problema en recuperar una lista global, pues es simplemente un método que los recupere todos, ahora bien, cuando quiero recuperar un usuario específico, vease, usuario cuyo correo sea "[email protected]", es cuando me encuentro con el problema, pues necesito un método que recupere usuario por correo exacto, esto sería viable si luego no me surgiese la necesidad de hacer un método que sea recuperar usuarios cuyo correo sea like "@gmail.com", pero me surge! Mi solución fue, en el dao, crear un método que sea findByCriterio, que ejecuta una consulta tal que SELECT * FROM Usuarios WHERE $criterio, esto me facilita todo, pues puedo recuperar listas u objetos simples, pero pierdo el control de la inyeccion que tenía con las sentencias preparadas para mi get delete persistir y modificar...

Se os ocurre alguna idea?

este sería el código de la operación del dao


function bddGetListaUsuariosByCriterio($unCriterio){

$dbconfig = new DBConfig();
$dbconfig = $dbconfig->db_connect();


$consulta = "SELECT id FROM ". TABLA_USUARIOS ." WHERE $unCriterio";

//Debug
if (DEBUG_QUERIES == true)
echo "<br /> DEBUG: " .$consulta . " <br />";


$resource = mysql_query($consulta);

$listaUsuarios = array();

if ($resource != false){
$i = 0;
while ($usuarioActual = mysql_fetch_assoc($resource)){
$unUsuario = getUsuario($usuarioActual['id']);
$listaUsuarios[$i++] = $unUsuario;
}
}

return $listaUsuarios;
}


Un saludo!

Carlos