Foros del Web » Programando para Internet » PHP »

¿Como hariais esto?: "nombres unicos"

Estas en el tema de ¿Como hariais esto?: "nombres unicos" en el foro de PHP en Foros del Web. He creado unos formularios para que cada usuario "suba" sus imagenes al servidor. Pienso que seria interesante no dejar las fotos con el nombre de ...
  #1 (permalink)  
Antiguo 04/11/2005, 04:09
Avatar de kazafun  
Fecha de Ingreso: diciembre-2003
Ubicación: Elda
Mensajes: 843
Antigüedad: 14 años
Puntos: 13
¿Como hariais esto?: "nombres unicos"

He creado unos formularios para que cada usuario "suba" sus imagenes al servidor.

Pienso que seria interesante no dejar las fotos con el nombre de origen, ya que entre otras cosas podria haber duplicados... vamos, para dar facilidades al usuario, que suban la foto con el nombre que quieran pero que se cambie en el servidor.

Habia pensado añadir en la tabla de usuarios un campo "contador" para cada usuario que se incremente cada vez que se sube una imagen. El nombre de la imagen, para que fuera unico, lo formaria de esta manera:

(id del usuario) . "-" . (contador).jpeg o gif


Aparentemente me funcionara, pero esto me supondria en mi aplicacion una llamada extra a la BD... ¿Pensais que es lo correcto? ¿Teneis otra solucion mas optima?

GRACIAS!!!
  #2 (permalink)  
Antiguo 04/11/2005, 04:25
Avatar de elangelcaido  
Fecha de Ingreso: septiembre-2003
Ubicación: Oviedo
Mensajes: 1.068
Antigüedad: 14 años, 3 meses
Puntos: 4
Yo suelo usar algo como esto:
Código PHP:
if (is_uploaded_file($HTTP_POST_FILES['imagen']['tmp_name'])) {
    
$imagen=rand(0,1000);
    
$imagen.=$HTTP_POST_FILES['imagen']['name'];
    
$imagen=delBlancos($imagen);
    
copy($HTTP_POST_FILES['imagen']['tmp_name'], "ruta/en/servidor/$imagen");

Lo que hago es llenar una vble. $imagen con un numero aleatorio entre 0 y 1000 luego le añado el nombre de la imagen que se quiere subir y antes de copiarlo al servidor le quito lo espacios en blanco (si quieres te paso tambien esa funcion).
__________________
Ta Luego! Al final sólo puede quedar uno...
________
lukos.org
  #3 (permalink)  
Antiguo 04/11/2005, 08:27
Avatar de kazafun  
Fecha de Ingreso: diciembre-2003
Ubicación: Elda
Mensajes: 843
Antigüedad: 14 años
Puntos: 13
Gracias, definitivamente voy a hacerlo a tu estilo.
Por cierto, ¿alguna razon en particular para no utilizar

move_uploaded_file($HTTP_POST_FILES['imagen']['tmp_name'], $destino)

????


Por cierto... si me pasas la funcioncilla delBlancos() favor que me haces... GRACIAS!

Última edición por kazafun; 04/11/2005 a las 08:50
  #4 (permalink)  
Antiguo 04/11/2005, 09:47
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por kazafun
Gracias, definitivamente voy a hacerlo a tu estilo.
Por cierto, ¿alguna razon en particular para no utilizar

move_uploaded_file($HTTP_POST_FILES['imagen']['tmp_name'], $destino)

????


Por cierto... si me pasas la funcioncilla delBlancos() favor que me haces... GRACIAS!
Usa la función move_uploaded_file() .. te aseguras problemas con "safe mode" por ejemplo y otras restricciones sobre "open_base_dir" y afines que tiene como limitación usar copy() para este caso concreto.

Un saludo,
  #5 (permalink)  
Antiguo 07/11/2005, 03:35
Avatar de elangelcaido  
Fecha de Ingreso: septiembre-2003
Ubicación: Oviedo
Mensajes: 1.068
Antigüedad: 14 años, 3 meses
Puntos: 4
Aqui la tienes (si ves que se puede mejorar no dudes en hacerlo ):
Código PHP:
/**
     * Funcion que elimina los espacios en blanco de una cadena
     * @param string $cadena Cadena a tratar
     * @access Private
     * @return string La cadena tratada.
     */
    
function delBlancos($cadena){
        
$aux="";
        for(
$i=0;$i<strlen($cadena);$i++){
            while(
strcmp($cadena[$i],' ')==0){
                
$i++;
            }
        
$aux.=$cadena[$i];
        }    
        return 
$aux;
    } 
__________________
Ta Luego! Al final sólo puede quedar uno...
________
lukos.org
  #6 (permalink)  
Antiguo 07/11/2005, 04:07
Avatar de kazafun  
Fecha de Ingreso: diciembre-2003
Ubicación: Elda
Mensajes: 843
Antigüedad: 14 años
Puntos: 13
Cita:
Iniciado por elangelcaido
Aqui la tienes (si ves que se puede mejorar no dudes en hacerlo ):
Código PHP:
/**
     * Funcion que elimina los espacios en blanco de una cadena
     * @param string $cadena Cadena a tratar
     * @access Private
     * @return string La cadena tratada.
     */
    
function delBlancos($cadena){
        
$aux="";
        for(
$i=0;$i<strlen($cadena);$i++){
            while(
strcmp($cadena[$i],' ')==0){
                
$i++;
            }
        
$aux.=$cadena[$i];
        }    
        return 
$aux;
    } 
Muchas gracias, tomare nota, aunque me sale mas sencillo asi:

Código PHP:
function delBlancos($cadena)
    {
    
$aux str_replace(" """$cadena);
    return(
$aux);
    } 
Igual es menos optimo... no lo se...

Un saludo.
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:23.