Foros del Web » Programando para Internet » PHP »

Valor input file

Estas en el tema de Valor input file en el foro de PHP en Foros del Web. Hola Tengo un formulario de edicion en los que se muestran los datos. Todos los datos se editan bien excepto las imagenes porque si edito ...
  #1 (permalink)  
Antiguo 10/09/2008, 02:27
 
Fecha de Ingreso: septiembre-2008
Mensajes: 13
Antigüedad: 15 años, 7 meses
Puntos: 0
Valor input file

Hola

Tengo un formulario de edicion en los que se muestran los datos. Todos los datos se editan bien excepto las imagenes porque si edito algun otro campo y no subo ninguna imagen se pierde el nombre de la imagen en la base de datos(registro) ya que envia un valor vacio, intentaba hacerlo por el value del input file pero estos no pueden tener un valor predefinido.

Intente solucionarlo con el siguiente script pero no sale.
Código PHP:
if (empty($_POST['Imagen_ff'])){
    
    
$XSQL="SELECT Imagen_f FROM elemento WHERE N_inventario='".$_POST['N_inventario']."'";
    
$resultX=mysql_query($XSQL);
    
$rowX=mysql_fetch_array($resultX);
    
$destino=$rowX['Imagen_f'];
    
    }else{
    
        
$cod=$_POST['N_inventario'];
        
$origen=$_FILES['Imagen_ff']['tmp_name'];
        
$destino=$_FILES['Imagen_ff']['name'];
        
// le cambiamos el nombre con esta funcion para que el enlace se cree correctamente
        
$destino=str_replace(" ""_""$destino");
        
$ruta="./imagenes/".$cod."/";
        
copy($origen$ruta.$destino);
    }

    
$SQL_actualiza="UPDATE elemento SET Nombre='".$_POST[Nombre]."', Fecha_adquisicion='".$_POST[Fecha_adquisicion]."', Descripcion='".$_POST[Descripcion]."', Observaciones='".$_POST[Observaciones]."',Precio='".$_POST[Precio]."', Alto='".$_POST[Alto]."', Ancho='".$_POST[Ancho]."', Largo='".$_POST[Largo]."', Peso='".$_POST[Peso]."', Id_proveedor='".$_POST[Proveedor]."', Calidad='".$_POST[Calidad]."', Ubicacion='".$_POST[Ubicacion]."', Material='".$_POST[Material]."', Estado='".$_POST[Estado]."', Categoria='".$_POST[Categoria]."',Imagen_f='$destino' WHERE N_inventario='".$_POST[N_inventario]."';"
Sabeis porque puede ser?

Gracias
  #2 (permalink)  
Antiguo 11/09/2008, 01:01
 
Fecha de Ingreso: agosto-2008
Mensajes: 42
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Valor input file

No lo tengo claro, pero tal vez te resulte mejor hacer que la consulta de actulización sea distinta en el caso que no se suba imagenes.

Es decir, if empty($_POST['imagen']), entonces hace una consulta update sin actualizar el campo de la imagen.

else ==> has una consulta update actualizando el campo de la imagen.

Warning!!!:

Si el acceso a esta página no está protegido con contraseña (por ejemplo, en la seccion del admin de tu sitio).... de lo contrario se puede dar la oportunidad de hacer inyecciones no deseadas en tu codigo (hacking), por ejemplo, dañando la base de datos...

Ejemplo:

En el campo Peso del formulario yo podría colocar lo siguiente: 10" while 1 #

incluyendo el " inicial. Esto podría hacer que tu sql query se transforme en:

UPDATE elemento SET Nombre="nombre" [... etc.. ] , Peso="10" while 1 # el resto queda como comentario por lo que no se ejecuta..

Lo que provocaria que todas las filas de tu tabla compartiría casi los mismo datos. Esto dejaría tu base de datos inutilizable.

No quiero enseñar a hacer daño, quiero enseñar a prevenirlo.

Esto afortunamente tiene solucion. Mandame un MP si quieres que te de más detalle (lo siento, pero no es el tema de este thread).

Saludos,
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 22:39.