Foros del Web » Programando para Internet » PHP »

codigo alfanumerico (o numerico) irrepetible

Estas en el tema de codigo alfanumerico (o numerico) irrepetible en el foro de PHP en Foros del Web. ¿Existe algún método en PHP de generar (automaticamente) un tipo de codigo o clave (alfanumerica o numerica) que sea IMPOSIBLE salga repetida incluso si dos ...
  #1 (permalink)  
Antiguo 23/02/2005, 21:47
 
Fecha de Ingreso: diciembre-2003
Mensajes: 1.583
Antigüedad: 20 años, 2 meses
Puntos: 13
codigo alfanumerico (o numerico) irrepetible

¿Existe algún método en PHP de generar (automaticamente) un tipo de codigo o clave (alfanumerica o numerica) que sea IMPOSIBLE salga repetida incluso si dos o más usuarios la generan simultáneamente?

(ya sé que es poco probable que dos usuarios generen el codigo simultaneamente sin ninguna diferencia de trillonesimas de segundo, pero no es imposible :P)


Duda: si hoy genero el codigo con session_id() ¿puede ser que mañana salga repetido?

pd: No es nada de vida o muerte, pero me gustaría poder disponer de dicha posibilidad :D
__________________
El conocimiento es libre: Movimiento por la Devolución

Última edición por frijolerou; 23/02/2005 a las 22:00
  #2 (permalink)  
Antiguo 23/02/2005, 22:00
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 10 meses
Puntos: 2
Encontre esto hace algun tiempo:
Código PHP:
<?
function crear_semilla() {
   list(
$usec$sec) = explode(' 'microtime());
   return (float) 
$sec + ((float) $usec 100000);
}
srand(crear_semilla());

$clave="";
$max_chars round(rand(7,10));  // tendrá entre 7 y 10 caracteres
$chars = array();
for (
$i="a"$i<"z"$i++) $chars[] = $i
$chars[] = "z";
for (
$i=0$i<$max_chars$i++) {
  
$letra round(rand(01)); 
  if (
$letra// es letra
    
$clave .= $chars[round(rand(0count($chars)-1))];
  else 
// es numero
    
$clave .= round(rand(09));
}
echo 
$clave;
?>
No creo que sea "IRREPETIBLE" pero si muy dificil de que dos personas obtengan el mismo codigo...

PD: creo que si, si hoy destruyes tu ID de sesion puede que mañana tengas la misma (con muchisima suerte)
__________________
I Love Programming...
  #3 (permalink)  
Antiguo 24/02/2005, 07:23
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Bueno .. para que no se repita algo .. si lo que vas generando lo vas almacenando en algún lugar .. si comparas ahí antes de entregarlo finalmente lo que generas seguro que nunca será repetido ...

De todas formas .. un simple:

Código PHP:
$codigo=md5(microtime()); 
es bastante "irrepetible"

En las FAQ's hay otro ejemplo en base a eso mismo más versatil (pues puedes definir que tipo de "clave" quieres generar):
http://www.forosdelweb.com/f18/faqs-php-530600-post411483/

Cita:
Duda: si hoy genero el codigo con session_id() ¿puede ser que mañana salga repetido?
Dicha función no genera nada .. sino que obtiene el SID en curso. De hecho si quieres generar por tus médios el SID .. deberías ingresarlo como parámetro a esa función. Visto de otra forma .. si, "generaría" una "clave" si usas:

session_start();
$codigo=session_id();

Pero será válido para la sesión en curso .. así que no es ese el uso como deberías emplearlo ..

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 14:02.