Tema: FAQ's de PHP
Ver Mensaje Individual
  #67 (permalink)  
Antiguo 12/06/2003, 01:38
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Tema: Algoritmos/utilidades

Pregunta: ¿Cómo generar passwords aleatórios numéricos o alfanuméricos de longitud variable?

Respuesta:

Usando expresiones regulares y time() se pueden obtener dichos passwords aleatorios de una forma muy curiosa (por lo menos para mí xD). En el código se detalla como usa la función:

Código PHP:
<?php

// Uso/sintax:
// genera_password (longitud password en caracteres o digitos, [tipo=alfanumerico|numerico])
// Si no indicas $tipo se asume como por defecto alfanumerico.

function genera_password($longitud,$tipo="alfanumerico"){

    if (
$tipo=="alfanumerico"){
        
$exp_reg="[^A-Z0-9]";
    } elseif (
$tipo=="numerico"){
        
$exp_reg="[^0-9]";
    }
    
    return 
substr(eregi_replace($exp_reg""md5(rand())) .
       
eregi_replace($exp_reg""md5(rand())) .
       
eregi_replace($exp_reg""md5(rand())),
       
0$longitud);
}

//Ejemplo:
echo "Password: (alfanumérico) ".genera_password(8)."<br>";
echo 
"Password: (numérico) ".genera_password(15,"numerico")."<br>";
echo 
"(recarga la página para ver otros passwords aleatorios)";

?>
Un saludo,

pd: La forma de usar las expresiones regulares no la implementé yo .. Tan sólo lo adapté para funcionar como "función". No recuerdo de donde la saqué.
pd2: Mejora al la generación del código aleatório, por problemas si se ejecutaba dicha función en bucles bajo una ejecución de un mismo script. Se comentó el tema en este mensaje: http://www.forosdelweb.com/f18/generar-muchos-passwords-244253/ . Gracias a Jpinedo.

Última edición por Cluster; 06/11/2004 a las 15:30