Foros del Web » Programando para Internet » PHP »

generar nombre único (al estilo youtube).

Estas en el tema de generar nombre único (al estilo youtube). en el foro de PHP en Foros del Web. Actualmente genero un nombre único a través de time() (sólo números) pero me gustaría mezclar también letras (no al final), sino como tiene youtube para ...
  #1 (permalink)  
Antiguo 09/04/2009, 11:28
 
Fecha de Ingreso: enero-2009
Mensajes: 46
Antigüedad: 15 años, 2 meses
Puntos: 1
generar nombre único (al estilo youtube).

Actualmente genero un nombre único a través de time() (sólo números) pero me gustaría mezclar también letras (no al final), sino como tiene youtube para acceder a los videos (letras, guiones y número).

Me pregunto si será necesario comprobar en la base de datos los nombres existentes para no repetir, siendo asi.. ¿no perjudica en rendimiento?

Nosé, estaría bien utilizar time() (imposible repetir) y a la vez usar letras entre dichos números..

Bueno estoy un poco perdido, ¿que recomiendan?

Gracias.
  #2 (permalink)  
Antiguo 09/04/2009, 12:36
machoman112233
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: generar nombre único (al estilo youtube).

Prueba con uniqid, md5,etc ... En teoria te generan un valor unico, sacas una parte del string (bastante grande) y lo guardas en la base de datos apuntando a lo que tu quieras... los combinas, etc... no se otra cosa no se me ocurre...
  #3 (permalink)  
Antiguo 09/04/2009, 12:44
Avatar de JairLizcano  
Fecha de Ingreso: junio-2008
Ubicación: Santander, Colombia
Mensajes: 608
Antigüedad: 15 años, 10 meses
Puntos: 53
Respuesta: generar nombre único (al estilo youtube).

Podrias generarlo a través de un nombre único de archivo y la funcion date.

En conclusión ello si nunca te permitiría dos archivos con el mismo nombre.

Entonces, haces el respectivo control y guardas el nombre del archivo $nombreArchivo0362009, utilizando $nombreArchivo+dia-mes-año.

Código PHP:
$nombreArchivo 'nombre'
$orden date("Ynjhis");

$unico $nombreArchivo.$orden
  #4 (permalink)  
Antiguo 09/04/2009, 17:37
 
Fecha de Ingreso: enero-2009
Mensajes: 46
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: generar nombre único (al estilo youtube).

La verdad no lo consigo..

JairLizcano, esa manera mucho no me gusta, me refiero al estilo.. aunque si sería único. Me gusta más como tiene youtube donde mezcla mayúsculas, minúsculas, números, etc.. Estuve viendo algun clone pero nadie usa esa manera.

Si conoceis algun clone que en la parte URL sea igual, lo podría estudiar pues.

Graciass.
  #5 (permalink)  
Antiguo 09/04/2009, 17:39
Avatar de JairLizcano  
Fecha de Ingreso: junio-2008
Ubicación: Santander, Colombia
Mensajes: 608
Antigüedad: 15 años, 10 meses
Puntos: 53
Respuesta: generar nombre único (al estilo youtube).

¿Te serviría algo como?:

Código PHP:
35ImaGEn200903 
Juega algo con las funciones.

Podrías también separar el nombre de la imágen e intercalar un numero bien sea dia-mes-año entre cada letra.

Código PHP:
I35ma2009g35e03N35 

Última edición por JairLizcano; 09/04/2009 a las 17:45
  #6 (permalink)  
Antiguo 09/04/2009, 17:51
 
Fecha de Ingreso: enero-2009
Mensajes: 46
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: generar nombre único (al estilo youtube).

Si la verdad tienes razón es cuestión de jugar con las funciones, intento que el resultado no sea muy significativo, o sea, se compruebe facilmente que se juega con el año o nombre original del archivo, etc.

Un resultado así quiero:
E6fl5kxFvrc
pZeN6kdgM2Y

Se que es una tontería querer hacerlo solo de aquella manera, pero me gusta el estilo sin tantos números.
Claro que hay formas sencillas de conseguirlo pero se usa una base de datos, y ahi puedo perder en rendimiento comprobando siempre cuales no se repiten y tal..
  #7 (permalink)  
Antiguo 09/04/2009, 20:11
Avatar de dannce4life  
Fecha de Ingreso: junio-2008
Ubicación: localhost
Mensajes: 137
Antigüedad: 15 años, 10 meses
Puntos: 6
Respuesta: generar nombre único (al estilo youtube).

Código php:
Ver original
  1. function rand_($l = 32){
  2.         $c = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxwz0123456789";
  3.         for(;$l > 0;$l--) $s .= $c{rand(0,strlen($c))};
  4.         return str_shuffle($s);
  5.     }

el mas alto valor aleatorio posible
__________________
Gracias
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 15:37.