Foros del Web » Programando para Internet » PHP »

Numero aleatorio en Formulario??

Estas en el tema de Numero aleatorio en Formulario?? en el foro de PHP en Foros del Web. Saludos. Explico. Necesito poner ante cada imagen subida un numero aleatorio para evitar subir 2 cosas con el mismo nombre. me explico cuando subo algo ...
  #1 (permalink)  
Antiguo 16/08/2008, 19:53
 
Fecha de Ingreso: junio-2008
Mensajes: 65
Antigüedad: 15 años, 10 meses
Puntos: 1
Información Numero aleatorio en Formulario??

Saludos.

Explico.

Necesito poner ante cada imagen subida un numero aleatorio para evitar subir 2 cosas con el mismo nombre.

me explico

cuando subo algo sale

http://mipagina.com/files/foto.jpg

de esa forma, cuando otra persona valla a subir un archivo llamado "foto" ps tendra un problema.

me gustaria que quede asi:

http://mipagina.com/files/0245
/foto.jpg

este es el codigo que tengo





Código PHP:
<?php
echo
'Tipo de fichero = '$_FILES['fichero']['type'] .'<br>'.
'Tamaño del fichero = '$_FILES['fichero']['size'] .'bytes<br>'.
'Abrir fichero = <a href="/files/'$_FILES['fichero']['name'] .'">'$_FILES['fichero']['name'] .'</a><br>'/*Reemplazar "/CARPETA/" por la ruta a la carpeta donde guardarás el archivo */
'Url al archivo = <a href="/files/'$_FILES['fichero']['name'] .'">http://warezrd.org/files/'$_FILES['fichero']['name'] .'</a><br>'/*Reemplazar "/CARPETA/" por la ruta de la carpeta donde kedan los archivos y "http://URL" por la dirección donde guardarás el archivo */


if (is_uploaded_file($_FILES['fichero']['tmp_name'])) {
move_uploaded_file($_FILES['fichero']['tmp_name'] , $_SERVER['DOCUMENT_ROOT'] .'/files/'$_FILES['fichero']['name']); /*Reemplazar "/CARPETA/" por ruta donde guardarás el archivo*/
}
else
{
switch(
$_FILES['fichero']['error'])
{
case 
0//no error; possible file attack!
echo "Hubo un problema con el fichero.";
break;
case 
1//uploaded file exceeds the upload_max_filesize directive in php.ini
echo "El fichero que intentas subir es demasiado grande.";
break;
case 
2//uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the html form
echo "El fichero que intentas subir es demasiado grande.";
break;
case 
3//uploaded file was only partially uploaded
echo "El fichero que intentas subir fue subido sólo parcialmente.";
break;
case 
4//no file was uploaded
echo "El fichero no fue subido.";
break;
default: 
//a default error, just in case! smile.gif
echo "Hubo un problema con el fichero.";
break;
}
}
?>

Última edición por Alfa11; 16/08/2008 a las 20:58
  #2 (permalink)  
Antiguo 16/08/2008, 19:59
 
Fecha de Ingreso: febrero-2008
Mensajes: 17
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Numero aleatorio en Formulario??

apenas estoy aprendiendo el lenguaje

pero algo asi

rand(0,9).rand(100,9999).rand(100,9999).”.”.$image n1[1];

alguno que sepa mas que yo que te diga
  #3 (permalink)  
Antiguo 16/08/2008, 20:04
Avatar de chwc  
Fecha de Ingreso: julio-2008
Ubicación: Buenos Aires ! :D
Mensajes: 814
Antigüedad: 15 años, 8 meses
Puntos: 103
Respuesta: Numero aleatorio en Formulario??

la verdad no entendi nada tu codigo ,pero puedes poner esto al principio
Código PHP:
<?php
$valor
=rand(1,1000000);
?>
y despues cambias estas lineas
Código PHP:
'Url al archivo = <a href="/files/'$_FILES['fichero']['name'] .'">http://MiPagina.com/files/'$_FILES['fichero']['name'] .'</a><br>'/*Reemplazar "/CARPETA/" por la ruta de la carpeta donde kedan los archivos y "http://URL" por la dirección donde guardarás el archivo */ 
por estas
Código PHP:
'Url al archivo = <a href="/files/'.$valor.'/'$_FILES['fichero']['name'] .'">http://MiPagina.com/files/'$_FILES['fichero']['name'] .'</a><br>'/*Reemplazar "/CARPETA/" por la ruta de la carpeta donde kedan los archivos y "http://URL" por la dirección donde guardarás el archivo */ 

aunque seria mejor que nos dieras el codigo que sacaste de la pagina en donde te lo dieron.

saludos
  #4 (permalink)  
Antiguo 16/08/2008, 20:10
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 2 meses
Puntos: 20
Respuesta: Numero aleatorio en Formulario??

¿Un número aleatorio? ¿Y qué pasa si dos usuarios quieren llamarlo foto.jpg y a los dos les sale el número 25? Es mucha casualidad, pero no se descarta... Puedes poner 2 números aleatorios seguidos, o 3, o 4.. cuantos más, menores serán las posibilidades.

Pero si no te importa que la carpeta tenga un nombre un poco más largo, puedes ahorrarte ese problema. El número puede ser una combinación de la fecha (año, mes, dia, hora, minuto, segundo) por lo que es imposible que coincida a no ser que lo suban en el mismo segundo y con el mismo nombre de archivo...

Código PHP:
$numero date("Y").date("m").date("d").date("H").date("i").date("s");
move_uploaded_file($_FILES['fichero']['tmp_name'] , $_SERVER['DOCUMENT_ROOT'] .'/files/'.$numero.'/'$_FILES['fichero']['name']); 
La tercera opción sería usar un número autoincremental, para que el directorio sea 001, 002, 003, 004.. y así progresivamente.

Suerte
  #5 (permalink)  
Antiguo 16/08/2008, 20:55
 
Fecha de Ingreso: junio-2008
Mensajes: 65
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Numero aleatorio en Formulario??

Cita:
Iniciado por david_M_G Ver Mensaje
¿Un número aleatorio? ¿Y qué pasa si dos usuarios quieren llamarlo foto.jpg y a los dos les sale el número 25? Es mucha casualidad, pero no se descarta... Puedes poner 2 números aleatorios seguidos, o 3, o 4.. cuantos más, menores serán las posibilidades.

Pero si no te importa que la carpeta tenga un nombre un poco más largo, puedes ahorrarte ese problema. El número puede ser una combinación de la fecha (año, mes, dia, hora, minuto, segundo) por lo que es imposible que coincida a no ser que lo suban en el mismo segundo y con el mismo nombre de archivo...

Código PHP:
$numero date("Y").date("m").date("d").date("H").date("i").date("s");
move_uploaded_file($_FILES['fichero']['tmp_name'] , $_SERVER['DOCUMENT_ROOT'] .'/files/'.$numero.'/'$_FILES['fichero']['name']); 
La tercera opción sería usar un número autoincremental, para que el directorio sea 001, 002, 003, 004.. y así progresivamente.

Suerte
en que parte de mi codigo pego eso
  #6 (permalink)  
Antiguo 16/08/2008, 21:35
 
Fecha de Ingreso: junio-2008
Mensajes: 65
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Numero aleatorio en Formulario??

Cita:
Iniciado por chwc Ver Mensaje

aunque seria mejor que nos dieras el codigo que sacaste de la pagina en donde te lo dieron.

saludos

ya repare el codigo ahroa si lo entiendes?
  #7 (permalink)  
Antiguo 17/08/2008, 05:00
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 19 años, 7 meses
Puntos: 71
Respuesta: Numero aleatorio en Formulario??

y por que no compruebas primero si existe el fichero, si existe, le añades al nombre 1_foto.jpg, vuelves a comprobar, si existe ese nuevo nombre, pruebas con 2_foto.jpg, asi, hasta que no exista, cuando estes seguro que no existe, mueves el fichero.

es un simple bucle while() no es muy complicado :)
  #8 (permalink)  
Antiguo 17/08/2008, 08:52
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 2 meses
Puntos: 20
Respuesta: Numero aleatorio en Formulario??

Cita:
Iniciado por Alfa11 Ver Mensaje
en que parte de mi codigo pego eso
He puesto la línea entera para que solo tengas que reemplazar... donde está la linea move_uploaded_file blabla, borras y pones mi código (las 2 líneas)
  #9 (permalink)  
Antiguo 17/08/2008, 10:47
 
Fecha de Ingreso: junio-2008
Mensajes: 65
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Numero aleatorio en Formulario??

me pone este error

Código:
Warning: move_uploaded_file(/home/mipagina/public_html/files/17124616/33.JPG) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home/mipagina/public_html/subir/upload.php on line 10
  #10 (permalink)  
Antiguo 17/08/2008, 13:22
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 19 años, 7 meses
Puntos: 71
Respuesta: Numero aleatorio en Formulario??

Cita:
Iniciado por Alfa11 Ver Mensaje
me pone este error

Código:
Warning: move_uploaded_file(/home/mipagina/public_html/files/17124616/33.JPG) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home/mipagina/public_html/subir/upload.php on line 10
normal, antes de subir el fichero, deberas crear el directorio, en este caso 17124616, siempre y cuando, no exista ya, y luego subir el fichero.


Sigo pensando que la mejor opcion es la que he comentado, debes ir probando nombres, si no existe, lo subes, si existe, pruebas el siguiente.

Si lo haces con numeros aleatorios, por muy grandes que sean, tienes la probabilidad que se repitan, y es lo que no quieres, y ya se sabe, las probabilidades, siempre juegan en nuestra contra

saludos
  #11 (permalink)  
Antiguo 17/08/2008, 13:38
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 2 meses
Puntos: 20
Respuesta: Numero aleatorio en Formulario??

Creo que lo has puesto en mal sitio, pon el código entero.

En teoría si un directorio no existe debería creártelo
  #12 (permalink)  
Antiguo 17/08/2008, 14:55
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 19 años, 7 meses
Puntos: 71
Respuesta: Numero aleatorio en Formulario??

Cita:
Iniciado por david_M_G Ver Mensaje
...
En teoría si un directorio no existe debería creártelo

Negativo, el directorio destino debe existir! lo unico que haria move_uploaded_file es sobreescribir el fichero destino si este existe.
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 05:33.