Foros del Web » Programando para Internet » PHP »

Generar un código de usuario único

Estas en el tema de Generar un código de usuario único en el foro de PHP en Foros del Web. Hola amigos: Quisiera generar un código de usuario usando las dos primeras letras de su nombre y 5 números al azar pero no sé como ...
  #1 (permalink)  
Antiguo 03/11/2008, 10:40
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Sonrisa Generar un código de usuario único

Hola amigos:

Quisiera generar un código de usuario usando las dos primeras letras de su nombre y 5 números al azar pero no sé como hacerlo.

Pueden darme alguna idea.

Gracias.
  #2 (permalink)  
Antiguo 03/11/2008, 10:43
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Respuesta: Generar un código de usuario único

Pues hacer un rand para generar esos cinco números, pero cabe la remota posibilidad de que coincida con uno generado anteriomente, así que deberías comprobar que no se haya guardado antes, y en caso de coincidir con uno que ya se había guardado... vuelves a generar otro.
  #3 (permalink)  
Antiguo 03/11/2008, 10:44
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Generar un código de usuario único

disculpa pero como es el código, cómo lo hago?
  #4 (permalink)  
Antiguo 03/11/2008, 10:50
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Respuesta: Generar un código de usuario único

Así de un modo rápido:

Para sacar las primeras letras del nombre utilza substr:
http://es2.php.net/substr

Luego generas un número aleatorio con rand:
http://es2.php.net/manual/es/function.rand.php

Concatenas los dos valores, y haces una consulta a la BDD donde tengas guardados los usuarios (porque están en una BDD, ¿no?)
Si se ha devuelto algún valor, volvemos al punto de generar un número aleatorio, concatenar y consultar.

Así hasta que no se encuentre otro usuario igual.
Y lo guardas en la BDD o donde sea.
  #5 (permalink)  
Antiguo 03/11/2008, 11:24
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Generar un código de usuario único

Me enredo pues lo que quiero es guardar esto en la BD:

$usuario = $_POST['usuario'];

y a esto aplicarle el substr y el rand para guardarlo en el campo de código del usuario.

????

Gracias.
  #6 (permalink)  
Antiguo 03/11/2008, 12:05
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Generar un código de usuario único

ya yo guardo todos mis datos en una tabla pero me hace falta generar este código de usuario tomando lo que recibo del post:

$usuario = $_POST['usuario'];

y a esto aplicarle el substr y el rand para guardarlo en el campo de código del usuario.

????

Gracias.
  #7 (permalink)  
Antiguo 03/11/2008, 12:10
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Respuesta: Generar un código de usuario único

Sí.

Supongamos que validas que $usuario sea una cadena correcta y válida.

Luego pillas los dos primeros carácteres:
$clave = substr($usuario, 0, 2);

Generamos el número aleatorio:
$num = echo rand(10000, 99999);

Se concatenan:
$clave .= $num;

Y ahora consultas a tu BDD a ver si hay algún usuario con esa clave. Lo ideal sería meter todo esto en un bucle, que se repita hasta que no se encuentren usuarios con esa clave (lo más probable es que NUNCA encuentre ninguno, pero existe la posibilidad)

Cuando salga del bucle lo grabas en la BDD.

De todos modos... ¿para qué queires hacer esto? ¿No es más fácil dejar a la BDD que genere un número autoincremental cuando añadas el usuario?
  #8 (permalink)  
Antiguo 03/11/2008, 12:27
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Generar un código de usuario único

Ah buenisimo, me funcionó pero quitandole el echo a:

$num = echo rand(10000, 99999);

lo puse asi:

$num = rand(10000, 99999);

Gracias
  #9 (permalink)  
Antiguo 03/11/2008, 12:45
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Respuesta: Generar un código de usuario único

Sí, el echo se me coló.
¿Lo has hecho ya? Puedes postear el código para ver si se puede mejorar y para quien lo pueda necesitar.

Pero repito lo de antes, si lo que buscas es que cada usuario tenga un ID único, yo lo haría con un campo autonúmerico en la tabla de la BDD.
  #10 (permalink)  
Antiguo 03/11/2008, 13:10
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Generar un código de usuario único

El código quedó asi:

//se recibe el nombre de usuario
$usuario = $_POST['usuario'];

//Se toman las dos 1eras letras del nombre
$clave = substr($usuario, 0, 2);

//Generamos el número aleatorio:
$num = rand(10000, 99999);

//Se concatenan:
$clave .= $num;

//Se inserta en la tabla
mysql_query("INSERT INTO $tabla (id_usuario) " .
"VALUES ('$clave')") or die(mysql_error());

Y listo
  #11 (permalink)  
Antiguo 03/11/2008, 13:13
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Respuesta: Generar un código de usuario único

Bueno, eso te funcionará en el 99.99% de los casos. Pero hay una infima posibilidad de que se genere un número aleatorio igual que otro que hay en la BDD y que además los dos primeros carácteres sean iguales....

Tú debes valorar si merece la pena tratar ese caso o no. (realmente no creo que llegase a coincidir con miles de usuarios, pero....)
  #12 (permalink)  
Antiguo 03/11/2008, 13:16
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Respuesta: Generar un código de usuario único

Ah, y otra cosa, valida siempre lo que venga por POST!!!!! Si hubiese dos espacios en blanco al principio de la cadena pillaría eso y se lo concatenaría a los números...
  #13 (permalink)  
Antiguo 03/11/2008, 13:22
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Generar un código de usuario único

Ok, le aplicaré esas validaciones. Mil 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 01:51.