Foros del Web » Programando para Internet » PHP »

problema, necesito anteponer nºs aleatorios delante del archivo a subir

Estas en el tema de problema, necesito anteponer nºs aleatorios delante del archivo a subir en el foro de PHP en Foros del Web. ¿Alguien sabe como hacer para que cuando subas una imagen al servidor, con upload, esta tenga un nombre aleatorio y no pueda sustituir a otra ...
  #1 (permalink)  
Antiguo 09/10/2007, 12:42
 
Fecha de Ingreso: octubre-2007
Mensajes: 41
Antigüedad: 16 años, 6 meses
Puntos: 0
problema, necesito anteponer nºs aleatorios delante del archivo a subir

¿Alguien sabe como hacer para que cuando subas una imagen al servidor, con upload, esta tenga un nombre aleatorio y no pueda sustituir a otra ya existente?
por mucho que busco nadie lo exploca con claridad, alguien se anima en php
  #2 (permalink)  
Antiguo 09/10/2007, 13:42
Avatar de @ndreX!  
Fecha de Ingreso: abril-2007
Mensajes: 161
Antigüedad: 17 años
Puntos: 4
Re: problema, necesito anteponer nºs aleatorios delante del archivo a subir

Puedes usar:

Código PHP:
$file time();
move_uploaded_file($_FILES['archivo']['tmp_name'],$file); 
Algo asi...

Saludos.
  #3 (permalink)  
Antiguo 09/10/2007, 13:54
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Re: problema, necesito anteponer nºs aleatorios delante del archivo a subir

Y hazlo con fecha - hora

Formato: aaaammddHHmmss(nombrefoto).extension

Código PHP:
<?php

    
echo date("YmdGis");
    
//output: 20071009165031
    /*
      Y = año
      m = mes (01 a 12)
      d = dia (01 a 31)
      G = hora (0 a 23)
      i = minutos (00 a 59)
      s = segundos (00 a 59)
    */

?>
Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #4 (permalink)  
Antiguo 09/10/2007, 14:55
 
Fecha de Ingreso: octubre-2007
Mensajes: 41
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: problema, necesito anteponer nºs aleatorios delante del archivo a subir

Lo siento mucho preo el problema es doble 1º no me funciona y 2º soy novato
parte del codigo es este y no se que cambios hacer ni donde meter nada:

$_POST['club'] = mosGetParam($_POST, 'club');
$_POST['city'] = mosGetParam($_POST, 'city');
$_POST['street'] = mosGetParam($_POST, 'street');
$_POST['plz'] = mosGetParam($_POST, 'plz');
$_POST['country'] = mosGetParam($_POST, 'country');

//Bild
$userfile2=(isset($_FILES['userfile']['tmp_name']) ? $_FILES['userfile']['tmp_name'] : "");
$userfile_name=(isset($_FILES['userfile']['name']) ? $_FILES['userfile']['name'] : "");
$imagesize = $_FILES['userfile']['size'];

if (( $imageenabled == 2 ) || ( ($imageenabled == 1) && (!empty($userfile_name)) ) ) {

$base_Dir = ELPATH.'/../../images/eventlist/location/';
$sizelimit = $sizelimit*1024; //size limit in kb

if (empty($userfile_name)) {
mosRedirect("index.php?option=$option&Itemid=$Item id", _EVENTS_IMAGEEMPT." ");
}

if ($imagesize > $sizelimit) {
mosRedirect("index.php?option=$option&Itemid=$Item id", _EVENTS_IMAGESIZEBIG." ");
}

$filename = split("\.", $userfile_name);

if (eregi("[^0-9a-zA-Z_]", $filename[0])) {
mosRedirect("index.php?option=$option&Itemid=$Item id", _EVENTS_IMAGECHARACT." ");
}

if (file_exists($base_Dir.$userfile_name)) {
mosRedirect("index.php?option=$option&Itemid=$Item id", _EVENTS_IMAGEEXIST." ");
}

if ((strcasecmp(substr($userfile_name,-4),".gif")) && (strcasecmp(substr($userfile_name,-4),".jpg")) && (strcasecmp(substr($userfile_name,-4),".png")) && (strcasecmp(substr($userfile_name,-4),".bmp"))) {
mosRedirect("index.php?option=$option&Itemid=$Item id", _EVENTS_IMAGETYPE." ");
}

if (!move_uploaded_file ($_FILES['userfile']['tmp_name'],$base_Dir.$_FILES['userfile']['name']) || !mosChmod($base_Dir.$_FILES['userfile']['name'])) {
mosRedirect("index.php?option=$option&Itemid=$Item id", _EVENTS_IMAGEFAIL." ");
} else {
$file = $base_Dir.$userfile_name;

//chmod Bild
@chmod ($file, octdec($imagechmod));

//Vorbereiten auf Thumbnailerstellung
$thumbdir = $base_Dir.'small/';
$save = $thumbdir.$userfile_name;

if ($imageprob = 1) {
$imageprob = TRUE;
} else {
$imageprob = FALSE;
}

if ($gddisabled == 1) {
evlist_imgd::thumb($file, $save, $imagewidth, $imagehight, $imageprob);
}
}

$_POST['locimage'] = $userfile_name ;
}



de verdad necesito este cambio.
gracias a todos
  #5 (permalink)  
Antiguo 09/10/2007, 15:08
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Re: problema, necesito anteponer nºs aleatorios delante del archivo a subir

1.- Pon despues de $_POST['country'] = mosGetParam($_POST, 'country'); esto:
Código PHP:
$numeroNuevo date("YmdGis"); 
2.- Busca en tu programacion la variable "$base_Dir" y cambiala por "$base_Dir.$numeroNuevo"

Haz el cambio y nos avisas como te fue.

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #6 (permalink)  
Antiguo 09/10/2007, 15:13
Avatar de @ndreX!  
Fecha de Ingreso: abril-2007
Mensajes: 161
Antigüedad: 17 años
Puntos: 4
Re: problema, necesito anteponer nºs aleatorios delante del archivo a subir

Para mi es en la linea:

Código PHP:
$userfile_name=(isset($_FILES['userfile']['name']) ? $_FILES['userfile']['name'] : ""); 
Y cambiarlo por:

Código PHP:
$userfile_name time().$_FILES['userfile']['name'];
// O
$userfile_name date("YmdGis").$_FILES['userfile']['name']; 
Saludos.
  #7 (permalink)  
Antiguo 09/10/2007, 15:16
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Re: problema, necesito anteponer nºs aleatorios delante del archivo a subir

Sip... lo que pasa es que si la agrega en Basedir tambien va a darle la misma fecha/hora de la pequeña foto... y asi las va a poder identificar con el mismo nombre y tambien a los permisos que esta dandole al archivo.
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #8 (permalink)  
Antiguo 09/10/2007, 15:34
 
Fecha de Ingreso: octubre-2007
Mensajes: 41
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: problema, necesito anteponer nºs aleatorios delante del archivo a subir

ya lo realice como dice marvin y nada , me dice que la imagen ya existe y no la renombra, teneis alguna idea mas, gracias por vuestra ayuda
  #9 (permalink)  
Antiguo 09/10/2007, 15:44
 
Fecha de Ingreso: octubre-2007
Mensajes: 41
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: problema, necesito anteponer nºs aleatorios delante del archivo a subir

UH! UH! casi casi lo hice como me dice @andrex y al menos el archivo ya se remonbra con la fecha lo que sucede es que no se ve la imagen, nos acercamos, gracias
  #10 (permalink)  
Antiguo 09/10/2007, 16:10
Avatar de @ndreX!  
Fecha de Ingreso: abril-2007
Mensajes: 161
Antigüedad: 17 años
Puntos: 4
Re: problema, necesito anteponer nºs aleatorios delante del archivo a subir

Es de revisar el codigo en donde llamas la imagen.

Saludos.
  #11 (permalink)  
Antiguo 09/10/2007, 16:19
 
Fecha de Ingreso: octubre-2007
Mensajes: 41
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: problema, necesito anteponer nºs aleatorios delante del archivo a subir

@ndrex eres mi salvador junto con marvin, pero eso ultimo no lo entiendo muy bien podias esplicarmelo como para tontos, tio te lo agradezco
un saludo y gracias
  #12 (permalink)  
Antiguo 09/10/2007, 20:01
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Re: problema, necesito anteponer nºs aleatorios delante del archivo a subir

Lo ultimo que te dice @ndreX! es que revises el codigo en donde muestras la foto...

Postealo por aca para ver que podemos hacer.

Y sip... error mio el haberte dicho que pusieras todo en Basedir ya que el nombre de la foto va a mantener el mismo nombre :P

Weno... por ahora me voy al cine :D

Suerte men!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #13 (permalink)  
Antiguo 09/10/2007, 23:17
 
Fecha de Ingreso: octubre-2007
Mensajes: 41
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: problema, necesito anteponer nºs aleatorios delante del archivo a subir

Vamos a ver si podemos terminar y os invito a algo, no estoy seguro pero creo que el codigo que me pedis es este en 3 bloques lo pongo ya me direis:

</td>
<td rowspan="4" align="left">
<?php //Zellenbereich f?r flyer
if (!empty($row->datimage)) {
$original = $mosConfig_live_site."/images/eventlist/events/".$row->datimage;
$thumb = $mosConfig_live_site."/images/eventlist/events/small/".$row->datimage;
if (file_exists(ELPATH."/../../images/eventlist/events/small/".$row->datimage)) {
$iminfo = @getimagesize("images/eventlist/events/".$row->datimage);
$widthev = $iminfo[0];
$heightev = $iminfo[1];
?>
<a href="javascript:void(window.open('<?php echo $original; ?>','Popup','width=<?php echo $widthev; ?>,height=<?php echo $heightev; ?>,location=no,menubar=no,scrollbars=no,status=no, toolbar=no,resizable=no'));">
<img src="<?php echo $thumb; ?>" alt="thumb" /></a>
<?php
} else { ?>
<img src="<?php echo $original; ?>" width="<?php echo $imagewidth; ?>" height="<?php echo $imagehight; ?>" alt="orginal" />
<?php
}
} else {
echo "&nbsp;";
}
?>
</td>

----------------------------------------------

</td>
<td rowspan="3">
<?php //Zellenbereich f?r flyer
if (!empty($row->locimage)) {
$originalloc = $mosConfig_live_site."/images/eventlist/location/".$row->locimage;
$thumbloc = $mosConfig_live_site."/images/eventlist/location/small/".$row->locimage;

if (file_exists(ELPATH."/../../images/eventlist/location/small/".$row->locimage)) {
$iminfoloc = @getimagesize("images/eventlist/location/".$row->locimage);
$widthloc = $iminfoloc[0];
$heightloc = $iminfoloc[1];
?>
<a href="javascript:void(window.open('<?php echo $originalloc; ?>','Popup','width=<?php echo $widthloc; ?>,height=<?php echo $heightloc; ?>,location=no,menubar=no,scrollbars=no,status=no, toolbar=no,resizable=no'));">
<img src="<?php echo $thumbloc; ?>" alt="thumb" /></a>
<?php
} else { ?>
<img src="<?php echo $originalloc; ?>" width="<?php echo $imagewidth; ?>" height="<?php echo $imagehight; ?>" alt="orginal" />
<?php
}
} else {
echo "&nbsp;";
}
?>

</td>
----------------------------------------------

<td rowspan="3">
<?php //Zellenbereich f?r flyer
if (!empty($l_rows[0]->locimage)) {
$originalloc = $mosConfig_live_site."/images/eventlist/location/".$l_rows[0]->locimage;
$thumbloc = $mosConfig_live_site."/images/eventlist/location/small/".$l_rows[0]->locimage;
if (file_exists(ELPATH."/../../images/eventlist/location/small/".$l_rows[0]->locimage)) {
$iminfoloc = @getimagesize("images/eventlist/location/".$l_rows[0]->locimage);
$widthloc = $iminfoloc[0];
$heightloc = $iminfoloc[1];
?>
<a href="javascript:void(window.open('<?php echo $originalloc; ?>','Popup','width=<?php echo $widthloc; ?>,height=<?php echo $heightloc; ?>,location=no,menubar=no,scrollbars=no,status=no, toolbar=no,resizable=no'));">
<img src="<?php echo $thumbloc; ?>" alt="thumb" /></a>
<?php
} else { ?>
<img src="<?php echo $originalloc; ?>" width="<?php echo $imagewidth; ?>" height="<?php echo $imageheight; ?>" alt="orginal" />
<?php
}
}
?>
</td>
</

Un saludo a los dos y espero que la peli fuera buena,
  #14 (permalink)  
Antiguo 10/10/2007, 08:27
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Re: problema, necesito anteponer nºs aleatorios delante del archivo a subir

Excelente peli "Radio Corazon" aca en chile :D

Una consulta... En el servidor y en la base de datos deja la foto renombrada ??

Pregunto porque me parece que solo lo hace en la base de datos.

Trata de accesar a la foto directamente por la ruta (Ej.: w³.tusitio.com/upload/foto.jpg) y postea los resultados aca.

Esto quiero chekearlo para identificar cual podria ser el problema.

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #15 (permalink)  
Antiguo 10/10/2007, 08:38
 
Fecha de Ingreso: octubre-2007
Mensajes: 41
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: problema, necesito anteponer nºs aleatorios delante del archivo a subir

aca en españa no tenemos esa peli, pero mañana voy a ver "el orfanato" que esta nominada a los oscar y es Española, bueno te comento, efectivamente no se visualiza la imagen poniendo la ruta en el explorer, pone:

Not Found
The requested document was not found on this server.


--------------------------------------------------------------------------------

Web Server at "mi web"
a ver si me das una solucion que estoy desesperado, ¿No habria otra formula para renombrar archivos con otro nombre ?
te digo esto porque con
$userfile_name=(isset($_FILES['userfile']['name']) ? $_FILES['userfile']['name'] : "");
funciona bien pero al cambiarlo por
$userfile_name = date("YmdGis").$_FILES['userfile']['name'];
ya NO sube la imagen al servidor

Última edición por joaquina5; 10/10/2007 a las 08:46
  #16 (permalink)  
Antiguo 10/10/2007, 08:48
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Re: problema, necesito anteponer nºs aleatorios delante del archivo a subir

Como suponia... lo que pasa es que le agregamos la fecha al dato que se va a guardar en la base de datos pero no a la foto que tu guardas.

Por lo tanto vuelve al archivo que guarda la foto y cambia estas dos lineas:

Código PHP:
//Esta es la que te dijo @ndreX! que cambiaras
$userfile_name=(isset($_FILES['userfile']['name']) ? $_FILES['userfile']['name']

//Esta es la otra q debes cambiar
if (!move_uploaded_file ($_FILES['userfile']['tmp_name'],$base_Dir.$_FILES['userfile']['name']) || !mosChmod($base_Dir.$_FILES['userfile']['name'])) { 
Por

Código PHP:
//Esta linea la vas a agregar para que cualquiera sea la fecha que uses no cambie
//Agregala despues de $_POST['country'] = mosGetParam($_POST, 'country');
$tiempo time();
// o esta otra
$tiempo date("YmdGis");

//y la modificacion a la primera linea
$userfile_name $tiempo.$_FILES['userfile']['name'];

//y la modificacion a la segunda linea
if (!move_uploaded_file ($_FILES['userfile']['tmp_name'],$base_Dir.$tiempo.$_FILES['userfile']['name']) || !mosChmod($base_Dir.$tiempo.$_FILES['userfile']['name'])) { 
Testea y nos cuentas!

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #17 (permalink)  
Antiguo 10/10/2007, 09:02
 
Fecha de Ingreso: octubre-2007
Mensajes: 41
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: problema, necesito anteponer nºs aleatorios delante del archivo a subir

nada no cambia el nombre del archivo, si existe ese archivo me dice que ya existe y si no esxiste me lo sube perfectamente, es igual que cuando me dijiste lo de base_dir que al final no me cambia el mombre. Alguna sugerencia compañero, aplicate please
  #18 (permalink)  
Antiguo 10/10/2007, 10:59
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Re: problema, necesito anteponer nºs aleatorios delante del archivo a subir

Ok... vamos a ver que otra posibilidad tenemos.

Agregale a tu pagina esta linea antes de todo:

Código PHP:
error_reporting(E_ALL^E_NOTICE); 
Trata de subir algo y dime si sale algun Warning o Fatal Error o algo por el estilo.
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #19 (permalink)  
Antiguo 10/10/2007, 11:16
 
Fecha de Ingreso: octubre-2007
Mensajes: 41
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: problema, necesito anteponer nºs aleatorios delante del archivo a subir

YA ESTA LO CONSEGUIMOS!!!! MUCHAS GRACIAS MARVIN Y @NDREX, LA SOLUCION ERA BIEN SENCILLA
UTILIZANDO EL CODIGO DE @ANDREX:

Y LA aYUDA Y PISTAS DE MARVIN
ERA CUESTION DE insertar date entre $base_Dir.$_FILES
y ahora funciona de vicio
Gracias a los dos
unos crack
os estare agradecido siempre
Nos Vemos

Última edición por joaquina5; 10/10/2007 a las 12:33
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 23:52.