Tema: FAQ's de PHP
Ver Mensaje Individual
  #77 (permalink)  
Antiguo 17/09/2003, 13:31
Avatar de Kernellover
Kernellover
 
Fecha de Ingreso: noviembre-2002
Ubicación: Perdido
Mensajes: 251
Antigüedad: 22 años
Puntos: 0
Generar passwords de calidad

P: ¿Como genero un password?

Para generar un password aleatorio de forma rápida podemos usar las funciones md5() junto con rand() tal como sigue.

Código PHP:
$caracteres 8// numero de caracteres a visualizar
$random_pass substr(md5(rand()),0,$caracteres);
echo 
$random_pass // imprime el password 
P: ¿Como genero un password facil de memorizar?

Primero habría que definir el concepto 'fàcil de memorizar', yo entiendo por facil ajikomufi y no jkimlhidt. Este sencillo escript genera un a cadena de caracteres formados por vocal consonante vocal o consonante vocal consonante, de este modo el password es leible y como consecuencia, fácil de memorizar.

Ahí va la función, la cual debería estar al inicio de todo de vuestra página junto con las demás funciones definidas.
Código PHP:
function f_genera_psw($num=8){ // By Kernellover
    
$voc = array ("a","e","i","o","u");
    
$con = array ("b","c","d","f","g","h","j","k","l","m","n","ñ","p","q","r","s","t","w","x","y","z");
    
$psw "";                // cadena que contendrá el password.
    
$vc  mt_rand(0,1);    // definde si empieza por vocal o consonante.
    
for ($n=0$n<$num$n++){
        if (
$vc==1){
            
$vc=0;
            
$psw .= $con[mt_rand(0,count($con)-1)];
        }
        
$psw .= $voc[mt_rand(0,count($voc)-1)];
        
$psw .= $con[mt_rand(0,count($con)-1)];
    }
    
$psw ereg_replace ("q","qu",$psw);
    
$psw ereg_replace ("quu","que",$psw);
    
$psw ereg_replace ("yi","ya",$psw);
    
$psw ereg_replace ("iy","ay",$psw);
    
$psw substr($psw,0,$num);
    return 
$psw;

Para llamar a la función se puede hacer así, saliendo impresos 8 caracteres (por defecto)
Código PHP:
echo f_genera_psw(); // imprime el password (8 caracteres por defecto) 
Para poner otra cantidad distinta de caracteres, solo hay que pasarlo como parametro así.
Código PHP:
echo f_genera_psw(6); // imprime 6 caracteres de password 
Espero que os sea de utilidad esta función que he creado.
Suerte!