Foros del Web » Programando para Internet » PHP »

ayuda con imagenes en BD

Estas en el tema de ayuda con imagenes en BD en el foro de PHP en Foros del Web. Hola: Tengo este scrpt para subir la direccion de la foto a la base de datos y la foto al servidor, esto funciona bien. El ...
  #1 (permalink)  
Antiguo 28/04/2010, 02:46
 
Fecha de Ingreso: septiembre-2003
Mensajes: 180
Antigüedad: 21 años, 1 mes
Puntos: 1
ayuda con imagenes en BD

Hola: Tengo este scrpt para subir la direccion de la foto a la base de datos y la foto al servidor, esto funciona bien. El problema que le veo es que si se sube otra foto con el mismo nombre suplanta una a la otra. La solución sería añadir a cada variable la fecha en minutos y segundos pero ¿ COMO SE HARÍA ? Algúna alma caritativa me podria poner un ejemplo en este mismo script ?


<?php
session_start();
include("conexion.php");
$link=Conectarse();
$target="images/";
$target.=$_FILES ['foto']['name'];
$pic=$target;
$name=$_POST['name'];
$target1="images/";
$target1.=$_FILES ['foto1']['name'];
$pic1=$target1;
$name=$_POST['name'];
$target2="images/";
$target2.=$_FILES ['foto2']['name'];
$pic2=$target2;
$name=$_POST['name'];
$target3="images/";
$target3.=$_FILES ['foto3']['name'];
$pic3=$target3;
$name=$_POST['name'];
$target4="images/";
$target4.=$_FILES ['foto4']['name'];
$pic4=$target4;
$name=$_POST['name'];
mysql_query("insert into alojamientos (imagen1,imagen2,imagen3,imagen4,imagen5) values ('".$pic."','".$pic1."','".$pic2."','".$pic3."','" .$pic4."')",$link);

if(move_uploaded_file($_FILES['foto']['tmp_name'],$target))
if(move_uploaded_file($_FILES['foto1']['tmp_name'],$target1))
if(move_uploaded_file($_FILES['foto2']['tmp_name'],$target2))
if(move_uploaded_file($_FILES['foto3']['tmp_name'],$target3))
if(move_uploaded_file($_FILES['foto4']['tmp_name'],$target4))
{

// Le indica si todo ok
echo "El archivo ".$_FILES['foto']['name']. " se ha subido, y su información ha sido añadido al directorio";
}
else {

// Da error si no
echo "Lo siento, no se ha podido subir el archivo.";
}

?>
  #2 (permalink)  
Antiguo 28/04/2010, 04:31
Avatar de Tokkara  
Fecha de Ingreso: junio-2008
Mensajes: 131
Antigüedad: 16 años, 5 meses
Puntos: 5
Respuesta: ayuda con imagenes en BD

Yo añadiría varias letras al azar. Ya que lo más seguro es que el script se ejecute en el mismo segundo y por tanto añadir las fechas a las imágnes no valdría.

Usa esta función

Código php:
Ver original
  1. function cambiar_nombre($nombre)
  2. {
  3. //Añade las letras en minusculas y los números que quieras.
  4. $letras = array("a", "b", "c", "h", "z", "3", "d");
  5. $letrasz = sizeof($letras);
  6. $nombre = $letras[mt_rand(0,  $letrasz)].$letras[mt_rand(0, $letrasz)].$nombre;
  7.  
  8. return $nombre
  9. }
Esta función lo que hace es añadir 2 letras al azar delante de la imagen. Por ejemplo: Si la imagen se llama imagen1.jpg esta función la transformaría en abimagen1.jpg. Así es casi seguro de ninguna imagen sobreescriba a otra.

Ahora solo tienes que usarla con los nombres
Código php:
Ver original
  1. $pic1 = "images/".cambiar_nombre($_FILES ['foto']['name']);
  2. $pic2 = "images/".cambiar_nombre($_FILES ['foto1']['name']);
  3. //Y así con todas

Aunque sinceramente yo me centraría en buscar un algoritmo para asegurame que lo que el usuario está subiendo es realmente una imagen. ¿Como te aseguras de lo que el usuario está subiendo es realmente una imagen y no un archivo php o un archivo .htaccess dañinos para la página?
__________________
Revolucionario controlador de plantillas para php
www.simphple.com
  #3 (permalink)  
Antiguo 28/04/2010, 05:10
 
Fecha de Ingreso: septiembre-2003
Mensajes: 180
Antigüedad: 21 años, 1 mes
Puntos: 1
Respuesta: ayuda con imagenes en BD

! Oye ¡ llevas mucha razón, no habia caido en eso. pero ¿ como sería ese algoritmo ? ayudame, porque soy bastante novato en esto y me las pueden dar todas en el mismo sitio.

Etiquetas: bd, imagenes
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 14:15.