Foros del Web » Programando para Internet » PHP »

Consejo para borrar productos e imágenes asociadas

Estas en el tema de Consejo para borrar productos e imágenes asociadas en el foro de PHP en Foros del Web. Hola!! Tengo el siguiente código para borrar inmuebles y sus imágenes asociadas. http://pastebin.com/pWCuQqZP Utilizo dos tablas: - inmuebles_imagenes : Las fotos de los inmuebles (id_imagen, ...
  #1 (permalink)  
Antiguo 11/01/2012, 09:48
 
Fecha de Ingreso: octubre-2003
Ubicación: España
Mensajes: 1.067
Antigüedad: 21 años, 1 mes
Puntos: 18
Consejo para borrar productos e imágenes asociadas

Hola!!

Tengo el siguiente código para borrar inmuebles y sus imágenes asociadas.
http://pastebin.com/pWCuQqZP

Utilizo dos tablas:

- inmuebles_imagenes: Las fotos de los inmuebles
(id_imagen, nbre_fichero, inmueble_id)

- inmuebles: Los datos del inmueble
(id_inmueble, etc...)

Dichos datos los sube el administrador mediante el panel de control.

Me funciona bien, solamente deseo saber vuestras opiniones al respecto y si existe algún método mejor o más seguro.

¿¿ No se podría realizar el borrado de fotos en el servidor y en la bd junto con los datos del inmueble todo a la vez ??, es decir, que se realice todo el proceso y si alguna parte falla que no se realice nada...

Saludos!!
  #2 (permalink)  
Antiguo 11/01/2012, 10:07
 
Fecha de Ingreso: julio-2010
Mensajes: 393
Antigüedad: 14 años, 3 meses
Puntos: 67
Respuesta: Consejo para borrar productos e imágenes asociadas

A mi me gusta tu código, solo 3 recomendaciones como buenas prácticas de seguridad y facilidad para leer tu código, para ejemplo veamos esta línea:

Código PHP:
$busqueda_imagen mysql_query("select * from inmuebles_imagenes WHERE inmueble_id = $id_inmueble"); 
1. Cuando uses variables que provengan de get o post, no las reasignes, pues cuando quieras editar tu código que posiblemente tenga miles de líneas que probablemente hayas olvidado a causa del tiempo, te será más fácil deducir de donde viene la variable $_GET['id_inmueble'] que la variable $id_inmueble.

Por lo que la línea anterior quedaría así:

Código PHP:
$busqueda_imagen mysql_query("select * from inmuebles_imagenes WHERE inmueble_id = $_GET['id_inmueble']"); 
2. Luego, a todos los valores numéricos que utilizarás en tus consultas, pasales primero una función adecuada para el "casting" de los mismos, por ejemplo floatval o intval, esto para evitar inyección sql, por lo que la línea anterior finalmente quedaría asi:

Código PHP:
$busqueda_imagen mysql_query("select * from inmuebles_imagenes WHERE inmueble_id = intval($_GET['id_inmueble'])"); 
3. Luego investiga más sobre como evitar sql injection para que sepas evitarlo no únicamente en valores numéricos, sino en cualquier tipo de valor, sobre todo string.

Saludos.
__________________
Páginas web de alta calidad y hechas a la medida.
  #3 (permalink)  
Antiguo 11/01/2012, 10:49
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Consejo para borrar productos e imágenes asociadas

@elquick ¿es broma?

Es lo peor que puedes hacer, usar directamente $_GET es lo que te hace vulnerable a SQL Inyection, y aparte sugerir usar intval() dentro de un string no va a tener ningún efecto.

Lo que hace el compañero es lo mejor, asignar a una variable local y limpiarla, es lo que es más recomendado.
  #4 (permalink)  
Antiguo 11/01/2012, 11:13
 
Fecha de Ingreso: julio-2010
Mensajes: 393
Antigüedad: 14 años, 3 meses
Puntos: 67
Respuesta: Consejo para borrar productos e imágenes asociadas

Hola GatorV, no, no es broma, en lo personal considero una buena práctica no reasignar las variables post y get, claro, si van a ser utilizadas en consultas sql, deben ser limpiadas correctamente para evitar sql injection, y tienes razón puse un error en el último ejemplo, debería quedar así (para que el intval tenga efecto):

Código PHP:
$busqueda_imagen mysql_query('select * from inmuebles_imagenes WHERE inmueble_id = ' intval($_GET['id_inmueble']) . ')'
Lo considero buena práctica para mejorar la legibilidad del código posteriormente.

Saludos!
__________________
Páginas web de alta calidad y hechas a la medida.
  #5 (permalink)  
Antiguo 11/01/2012, 12:03
 
Fecha de Ingreso: octubre-2003
Ubicación: España
Mensajes: 1.067
Antigüedad: 21 años, 1 mes
Puntos: 18
Respuesta: Consejo para borrar productos e imágenes asociadas

Tomo nota.. lo del sql injection..., no se puede hacer con mysql_real_escape_string ?
  #6 (permalink)  
Antiguo 11/01/2012, 12:12
 
Fecha de Ingreso: julio-2010
Mensajes: 393
Antigüedad: 14 años, 3 meses
Puntos: 67
Respuesta: Consejo para borrar productos e imágenes asociadas

Cita:
Iniciado por davidj Ver Mensaje
Tomo nota.. lo del sql injection..., no se puede hacer con mysql_real_escape_string ?
Si, esa es una excelente función para limpiar los datos que vas a procesar.

PD: Estoy esperando la opinión de GatorV sobre mi anterior respuesta (ya correjí el error en el ejemplo), pues talvez, si ya no es tan malo me quita el -1 que me puso :/

Saludos!
__________________
Páginas web de alta calidad y hechas a la medida.

Etiquetas: consejo, imagenes, productos, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:23.