Foros del Web » Programando para Internet » PHP »

Script para crear nombres de usuario

Estas en el tema de Script para crear nombres de usuario en el foro de PHP en Foros del Web. Hola Grupo, Necesito crear una función que me devuelva nombres de usuario diferentes, solo con pasarle los nombres y Apellidos como datos para generar el ...
  #1 (permalink)  
Antiguo 27/07/2007, 09:32
Avatar de Maxi.Net  
Fecha de Ingreso: abril-2005
Ubicación: R.M. Talagante, Chile!!
Mensajes: 295
Antigüedad: 19 años
Puntos: 2
Script para crear nombres de usuario

Hola Grupo,

Necesito crear una función que me devuelva nombres de usuario diferentes, solo con pasarle los nombres y Apellidos como datos para generar el username y que este no supere los 12 caracteres.
Una vez generado el nombre hago un select a la tabla usuarios y verifico que ese nombre no exista para hacer el insert, si existe, debe generarme un username diferente:

La idea es que:
La función devuelva, por ej: jperez (Juan Carlos Perez Soto)

Asumo que la conexión y la consulta se realizaron correctamente (MySQL)

si existe el username, la función genere otro username (jcperez, por ejemplo.)

Y asi hasta que pueda encontrar un nombre de usuario libre.

Son demasiados registros que se ingresan como para pedirle al usuario que ingrese por teclado el username.

Saludos y gracias
__________________
Amtez de enpezar kom otro idioma,
escrivamos vien el nueztro i como corezpomde. Jracias.
  #2 (permalink)  
Antiguo 27/07/2007, 10:08
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 4 meses
Puntos: 17
Re: Script para crear nombres de usuario

Ya tienes todos los puntos claros para hacer tu funcion.
Entonces deberias ya comenzar a hacer la funcion. No es Complicada. Solo debes poner ciertos parametros. te voy a ayudar con pseudocodigo (para que tu hagas la funcion, ya que nadie te la va a hacer, aqui te vamos ir ayudando con tu codigo).

Código PHP:
<?

function nombre_usuario($nombres,$apellidos)
{
    
// Separamos los Nombres
    
list($pri_nombre,$seg_nombre) = explode(" ",$nombres);
    
// Separamos los Apellidos
    
list($pri_apellido,$seg_apellido) = explode(" ",$apellidos);
    
// Ticket de Condicion
    
$username_encontrado FALSE;
    
$reglas 0;
    
// Mientras Encontremos un UserName
    
while ( !$username_encontrado )
    {
        
// Comenzamos con las Reglas
        
switch ($reglas)
        {
            
// Primer Nombre y Primer Apellido
            
case 0:
            
                
$username cortar_strig($pri_nombre.$pri_apellido,12);
                
// Realizamos Consulta SQL
                
$sql "SELECT id FROM usuarios where username = '$username'";
                
// Aplicamos Consulta
                // Si existe registro, debemos cambiar el nick
                    
$reglas++; // Seguimos con la Otra Regla
                // Si no Existen Registros
                    
$username_encontrado TRUE;
                    
                            
            break;
            
            
// Primer Nombre Segundo Nombre Primer Apellido
            
case 0:
            break;
            
// Primer Nombre Primer Apellido Segundo Apellido
            
case 0:
            break;
            
            
// Regla de Numeros Al Azar
            
default:
            
$username cortar_strig($pri_nombre.$pri_apellido,10).rand(0,99);
            
// No Aumentamos la $reglas++ ya que esta es la ultima regla, de nombres con un numero al azar
            
            
        
}
        
        if ( 
$username_encontrado )
        {
            
// Encontramos el Nick
            // Insertamos en la BD
            // o lo retornamos en la Funcion
            
return $username;
        }
    
    
    }
}    

function 
cortar_string($s,$t)
{
    return( 
substr($s,0,$t) );
}


?>
Ya te avanze bastante(no esta terminada), tu debes crear las otras reglas, mejorar un poco el codigo, y completar las consultas a la bd, y por supuesto verificar con el correspondiente if si existen registros blablabalbalba ...


saludos

Última edición por DeeR; 27/07/2007 a las 10:10 Razón: werererere
  #3 (permalink)  
Antiguo 27/07/2007, 10:46
Avatar de Maxi.Net  
Fecha de Ingreso: abril-2005
Ubicación: R.M. Talagante, Chile!!
Mensajes: 295
Antigüedad: 19 años
Puntos: 2
Re: Script para crear nombres de usuario

Muchas gracias por el apporte, gran aporte,
He agregado algunas cosas, que aparecen com MAYUSCULAS.

Gracias nuevamente y haber quien mas se anima para mejorar este script

Código PHP:
<?

function nombre_usuario($nombres,$apellidos)
{
    
// Separamos los Nombres
    
list($pri_nombre,$seg_nombre) = explode(" ",$nombres);
    
// Separamos los Apellidos
    
list($pri_apellido,$seg_apellido) = explode(" ",$apellidos);

   
// QUITAMOS LOS ESPACIOS EN BLANCO, EJEMPLO DE APELLIDO: DEL  CAMPO
   
$pri_nombrepreg_replace('/[ <>\'\"]/','',$pri_nombre); 
   
$seg_nombrepreg_replace('/[ <>\'\"]/','',$seg_nombre); 
   
$pri_apellidopreg_replace('/[ <>\'\"]/','',$pri_apellido); 
   
$seg_apellidopreg_replace('/[ <>\'\"]/','',$seg_apellido); 

    
// Ticket de Condicion
    
$username_encontrado FALSE;
    
$reglas 0;

    
$largo_nombre=strlen($pri_nombre);  //largo del nombre
    
$j=1//INDICA LA CANTIDAD DE CARACTERES A EXTRAER DEL NOMBRE

    // Mientras Encontremos un UserName
    
while ( !$username_encontrado )
    {
        
// Comenzamos con las Reglas
        
switch ($reglas)
        {
            
// Primer Nombre y Primer Apellido
            
case 0:
            
                
$username cortar_string(substr($pri_nombre,0,$j).$pri_apellido,12); //MANDAMOS LA CANTIDAD DE LETRAS ($J) DEL NOMBRE + EL APELLIDO (jperez,juperez,juaperez...)
                // Realizamos Consulta SQL
                
$sql "SELECT id FROM usuarios where username = '$username'";
                
// Aplicamos Consulta
                // Si existe registro, debemos cambiar el nick
                    
$j++; //SIGUIENTE CARACTER DEL NOMBRE
                    #MANTENGO LA REGLA HASTA TERMINAR CON TODAS LAS LETRAS DEL PRIMER NOMBRE
                   
if ($j $largo_nombre//SE USARON TODAS LAS LETRAS DEL PRIMER NOMBRE
                     
{
                     
$j=1//PARA COMENZAR CON LA PRIMERA LETRA DEL NOMBRE
                      
$reglas++; // Seguimos con la Otra Regla
                     
}
                  else 
                    {
                
// Si no Existen Registros
                    
$username_encontrado TRUE;
                    }
                            
            break;
            
            
// Primer Nombre Segundo Nombre Primer Apellido
            
case 0:
            break;
            
// Primer Nombre Primer Apellido Segundo Apellido
            
case 0:
            break;
            
            
// Regla de Numeros Al Azar
            
default:
            
$username cortar_strig($pri_nombre.$pri_apellido,10).rand(0,99);
            
// No Aumentamos la $reglas++ ya que esta es la ultima regla, de nombres con un numero al azar
            
            
        
}
        
        if ( 
$username_encontrado )
        {
            
// Encontramos el Nick
            // Insertamos en la BD
            // o lo retornamos en la Funcion
            
return $username;
        }
    
    
    }
}    

function 
cortar_string($s,$t
{
    return( 
substr($s,0,$t) );
}


?>
__________________
Amtez de enpezar kom otro idioma,
escrivamos vien el nueztro i como corezpomde. Jracias.

Última edición por Maxi.Net; 30/07/2007 a las 08:45 Razón: Gracias a la observación de Mickel (cortar_string(...))
  #4 (permalink)  
Antiguo 27/07/2007, 12:45
Avatar de Mickel  
Fecha de Ingreso: mayo-2002
Ubicación: Lima, Peru
Mensajes: 4.619
Antigüedad: 21 años, 11 meses
Puntos: 7
Re: Script para crear nombres de usuario

me parece muy bueno. Solo dos comentarios:

1. donde dice
$username = cortar_strig($pri_nombre.$pri_apellido,10).rand(0, 99);
debe ser
$username = cortar_string($pri_nombre.$pri_apellido,10).rand(0 ,99);

y

2. que tal un str_replace() primero en $apellidos para que si alguien se apellida De La Cruz o De La Torre lo tome como Cruz y Torre respectivamente
__________________
No tengo firma ahora... :(
  #5 (permalink)  
Antiguo 27/07/2007, 14:22
Avatar de Maxi.Net  
Fecha de Ingreso: abril-2005
Ubicación: R.M. Talagante, Chile!!
Mensajes: 295
Antigüedad: 19 años
Puntos: 2
Re: Script para crear nombres de usuario

Cita:
2. que tal un str_replace() primero en $apellidos para que si alguien se apellida De La Cruz o De La Torre lo tome como Cruz y Torre respectivamente
mmm.. creo que con eso le quitas identidad al usuario (exaguero, pero es mi apreciación)

Gracias por el aporte del

Cita:
$username = cortar_string($pri_nombre.$pri_apellido,10).rand(0 ,99);
Correguido
SAludos
__________________
Amtez de enpezar kom otro idioma,
escrivamos vien el nueztro i como corezpomde. Jracias.
  #6 (permalink)  
Antiguo 27/07/2007, 14:50
Avatar de Mickel  
Fecha de Ingreso: mayo-2002
Ubicación: Lima, Peru
Mensajes: 4.619
Antigüedad: 21 años, 11 meses
Puntos: 7
Re: Script para crear nombres de usuario

en todo caso... cuando el usuario tenga "de la ", tendrias que unirlo y que el apellido lo lea conjunto... asi, un De la Cruz se convierte en "delacruz"...
__________________
No tengo firma ahora... :(
  #7 (permalink)  
Antiguo 01/03/2016, 04:40
 
Fecha de Ingreso: marzo-2016
Mensajes: 2
Antigüedad: 8 años, 1 mes
Puntos: 0
Respuesta: Script para crear nombres de usuario

Cita:
Iniciado por Maxi.Net Ver Mensaje
Hola Grupo,

Necesito crear una función que me devuelva nombres de usuario diferentes, solo con pasarle los nombres y Apellidos como datos para generar el username y que este no supere los 12 caracteres.
Una vez generado el nombre hago un select a la tabla usuarios y verifico que ese nombre no exista para hacer el insert, si existe, debe generarme un username diferente:

La idea es que:
La función devuelva, por ej: jperez (Juan Carlos Perez Soto)

Asumo que la conexión y la consulta se realizaron correctamente (MySQL)

si existe el username, la función genere otro username (jcperez, por ejemplo.)

Y asi hasta que pueda encontrar un nombre de usuario libre.

Son demasiados registros que se ingresan como para pedirle al usuario que ingrese por teclado el username.

Saludos y gracias
  #8 (permalink)  
Antiguo 01/03/2016, 04:44
 
Fecha de Ingreso: marzo-2016
Mensajes: 2
Antigüedad: 8 años, 1 mes
Puntos: 0
Respuesta: Script para crear nombres de usuario

Código PHP:
Ver original
  1. /*Paso aqui un scrip que espero logres resolver:*/
  2. public function generateUserByFullName($fullName)
  3.     {
  4.         $user = null;
  5.         $temp = explode(' ', $fullName);
  6.         if (count($temp) > 0)
  7.         {
  8.             $allowedVars = null;
  9.             foreach ($temp as $value)
  10.             {
  11.                 if (strlen($value) > 3)
  12.                 {
  13.                     $allowedVars[] = $value;
  14.                 }
  15.             }
  16.         }
  17.         $vars['FN'] = $allowedVars[0];
  18.         $vars['FI'] = substr($allowedVars[0], 0, 1);
  19.  
  20.         $vars['MN'] = $allowedVars[1];
  21.         $vars['MI'] = substr($allowedVars[1], 0, 1);
  22.  
  23.         if (isset($allowedVars[2]))
  24.         {
  25.             $vars['SN'] = $allowedVars[2];
  26.             $vars['SI'] = substr($allowedVars[2], 0, 1);
  27.         }
  28.         if (isset($allowedVars[3]))
  29.         {
  30.             $vars['LN'] = $allowedVars[3];
  31.             $vars['LI'] = substr($allowedVars[3], 0, 1);
  32.         }
  33.  
  34.         $variants = array('FN', 'MN', 'SN', 'LN', 'FI', 'MI', 'SI', 'LI');
  35.        //posibles variantes a seguir, que se utilizarán de forma aleatoria o que se prefiera
  36.         $allowedConbinations = array(
  37.             '4.2',
  38.             '4.3',
  39.             '4.2.3',
  40.             '2.4',
  41.             '3.4',
  42.             '2.3.4',
  43.             '3.2.4',
  44.             '0.2',
  45.             '0.3',
  46.             '0.2.3',
  47.             '2.0',
  48.             '3.0',
  49.             '2.3.0',
  50.             '3.2.0',
  51.             '0.6',
  52.             '0.7',
  53.             '0.6.7',
  54.             '6.7.0',
  55.             '7.6.0',
  56.             '1.6.7',
  57.             '6.7.1',
  58.             '7.6.1',
  59.             '5.2.3',
  60.             '2.3.5',
  61.             '3.2.5',
  62.             '2.3.1',
  63.             '3.2.1',
  64.             '1.2.3',
  65.             '5.2',
  66.             '5.3',
  67.             '2.5',
  68.             '3.5',
  69.             '1.2',
  70.             '1.3',
  71.             '2.1',
  72.             '3.1',
  73.             '1.6',
  74.             '1.7',
  75.             '4.5.2',
  76.             '2.4.5',
  77.             '4.5.3',
  78.             '3.4.5',
  79.             '4.5.2.3',
  80.             '2.3.4.5',
  81.             '3.2.4.5',
  82.             '0.5.2',
  83.             '0.5.3',
  84.             '4.1.3',
  85.             '0.5.2.3',
  86.             '4.1.2.3',
  87.             '2.3.0.5',
  88.             '3.2.0.5',
  89.             '2.3.4.1',
  90.             '3.2.4.1'
  91.         );
  92.  
  93.        $runVariants = explode('.', $allowedConbinations[rand(0, count($allowedConbinations) - 1)]);
  94.         if (count($runVariants) > 0)
  95.         {
  96.             $user = '';
  97.             foreach ($runVariants as $value)
  98.             {
  99.                 if (isset($vars[$variants[$value]]))
  100.                 {
  101.                     if(strlen($user) <= 12)
  102.                      {
  103.                           $user.= $vars[$variants[$value]];
  104.                      }
  105.                 }
  106.             }
  107.         }
  108.         return $user;
  109.     }
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 18:16.