Foros del Web » Programando para Internet » PHP »

Duda con esta funcion

Estas en el tema de Duda con esta funcion en el foro de PHP en Foros del Web. HOla a todos, hace dias encontre esta funcion que genera passwords aleatorios facil de memorizar ( w w w .forosdelweb.com/wiki/PHP:¿Cómo_genero_un_password_fácil_de_memorizar%3F ) pero tengo una duda ...
  #1 (permalink)  
Antiguo 23/09/2009, 08:33
 
Fecha de Ingreso: septiembre-2009
Mensajes: 54
Antigüedad: 14 años, 8 meses
Puntos: 0
Duda con esta funcion

HOla a todos, hace dias encontre esta funcion que genera passwords aleatorios facil de memorizar (w w w .forosdelweb.com/wiki/PHP:¿Cómo_genero_un_password_fácil_de_memorizar%3F) pero tengo una duda y no he podido dormir toda la noche pensando en eso asi que quisiera que me explicaran (antes de hacer este post envie un mp al usuario que publico esa funcion pero van dias que no responde )
como ven en el link, el codigo es:

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)]; //AQUI ESTA MI DUDA
        

        
$psw .= $voc[mt_rand(0,count($voc)-1)]; //AQUI ESTA MI DUDA
        
$psw .= $con[mt_rand(0,count($con)-1)]; //AQUI ESTA MI DUDA
    

    
$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

y hasta ahora entiendo casi todo, pero no se porque pone -1?? alguien podria explicarme porque?? pienso que no es necesario pero bueno tambien pienso que sera importante y ahi esta mi duda
  #2 (permalink)  
Antiguo 23/09/2009, 08:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Duda con esta funcion

Porque count() te da el total de elementos de un array, y un array por lo general va de 0 a n - 1, no a n.

Saludos.
  #3 (permalink)  
Antiguo 23/09/2009, 08:48
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: Duda con esta funcion

De manera mas grafica es algo como esto:
Array = a b c d e f
Valor = 0 1 2 3 4 5
Total de elementos: 6

Si buscase del 0 al 6 estariamos contando 7 elementos (porque el 0 se incluye) por esa razon se hace -1 para buscar del 0 al 5

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #4 (permalink)  
Antiguo 23/09/2009, 09:12
 
Fecha de Ingreso: septiembre-2009
Mensajes: 54
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Duda con esta funcion

ya empiezo a entender un poco
pero me quedo esto

Código PHP:
$psw .= $con[mt_rand(0,count($con)-1)]; 
el array tiene en total 21 consonantes, pero como es un array para el tiene 20 porque empieza del 0,1,2....,20 entonces la funcion count cuenta todo el contenido del array empezando de b=1, c=2,... etc hasta llegar a la ultima consonante devolviendo algo asi
Código PHP:
$psw .= $con[mt_rand(0,21]; 
entonces creo yo que no es muy necesario el -1 cierto?? porque de todos modos count() cuenta todas las consonantes jejje solo queria entender eso
  #5 (permalink)  
Antiguo 23/09/2009, 09:33
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: Duda con esta funcion

Claro... la idea de hacerlo con funciones es que en el minuto que quieras agregar una nueva consonante por ej. en mayusculas en el arreglo, no tienes que cambiar nada mas =)

En cambio si le pones derechamente el 21 y quieres agregar datos en el arreglo, tendras que ir cambiando este numero tambien.

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
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 05:58.