Foros del Web » Programando para Internet » PHP »

Funcion generar contraseña

Estas en el tema de Funcion generar contraseña en el foro de PHP en Foros del Web. Hola Tengo una funcion para generar contraseñas y me funciona bien, el problema es que me la imprime y cuando llamo a la funcion desde ...
  #1 (permalink)  
Antiguo 19/06/2011, 04:39
 
Fecha de Ingreso: febrero-2011
Mensajes: 62
Antigüedad: 13 años, 2 meses
Puntos: 0
Funcion generar contraseña

Hola

Tengo una funcion para generar contraseñas y me funciona bien, el problema es que me la imprime y cuando llamo a la funcion desde el script la variable esta vacia, no se como guardar la contraseña en la variable sin que se queda vacia al llamarla.

No se si me he explicado bien.

Funcion:
Código PHP:
/*Generar contraseña aleatoria*/
function generar_contrasena($tam=7,$may=FALSE)
{
    
    
//El tamaño por defecto es 7 para una longitud de 8,    
    //Tamaño Mínimo
    
$min=7;
    
//Tamaño Máximo
    
$max=14;
        
    if(
$may === FALSE)
    {
        
$cadena='0123456789abcdefghijklmnopqrstuvwxyz';
    }
    else
    {
        
$cadena='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    }
    if((
$tam >= $min)&&($tam <=$max))
    {
        
//Generación aleatoria segun sea mayuscula o minuscula.
        
for($i=0;$i<=$tam;$i++)
        {
            
//Guardamos en un arreglo.
            
$pila[]=$cadena{rand(0,25)};
        }
        
//Desordenamos el arreglo.
        
shuffle($pila);
                
        
//Mostramos la contraseña   
        
foreach($pila as $letra => $contrasena)
        {
           echo 
$contrasena;        
        }     
    }
    
    

Gracias

Un saludo
  #2 (permalink)  
Antiguo 19/06/2011, 05:29
 
Fecha de Ingreso: junio-2010
Ubicación: Buenos Aires, Capital Federal
Mensajes: 29
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Funcion generar contraseña

Te dejo mi función que me parece más práctica, yo la uso en todos mis codigos ( cuando lo requiero ).

Código Javascript:
Ver original
  1. <script>
  2. var caracter="1234567890";
  3. caracter+="QWERTYUIOPASDFGHJKLZXCVBNM";
  4. caracter+="qwertyuioplkjhgfdsazxcvbnm";
  5. var numero_caracteres=10;
  6. var total=caracter.length;
  7. function azar(){
  8. var clave="";
  9. for(a=0;a<numero_caracteres;a++){
  10. clave+=caracter.charAt(parseInt(total*Math.random(1)));
  11. }
  12. document.forms[0].clave.value=clave;
  13. }
  14. </script>
  #3 (permalink)  
Antiguo 19/06/2011, 05:47
 
Fecha de Ingreso: febrero-2011
Mensajes: 62
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Funcion generar contraseña

Gracias por contestar, la funcion es en javascript y yo no he trabajado con java, y segun dicen js es mas vulnerable que php, no soy ningun experto, pero la probare a ver que tal.

Gracias

Un saludo
  #4 (permalink)  
Antiguo 19/06/2011, 06:57
 
Fecha de Ingreso: noviembre-2009
Mensajes: 226
Antigüedad: 14 años, 5 meses
Puntos: 19
Respuesta: Funcion generar contraseña

Evidentemente, esa función es vulnerable, dado que genera el "hash" de contraseñas de forma rudimentaria (por lo que hay millones de colisiones de contraseñas en un espacio reducido).

No sé porqué reinventar la rueda, cuando existen múltiples algoritmos que han demostrado su eficiencia y la escasas colisiones, como puedan ser: MDX (MD5, la más actual), SHA1, SHA2...

Además, son algoritmos unidireccionales.

Saludos!
__________________
Mi blog: magdkudama.com

Mi clase de validación de datos: magdkudama.com/validation
  #5 (permalink)  
Antiguo 19/06/2011, 08:07
Avatar de Carlmycol  
Fecha de Ingreso: diciembre-2007
Ubicación: Los Teques, Venezuela
Mensajes: 240
Antigüedad: 16 años, 4 meses
Puntos: 3
Respuesta: Funcion generar contraseña

Código PHP:
/*Generar contraseña aleatoria*/
function generar_contrasena($tam=7,$may=FALSE)
{
    
    
//El tamaño por defecto es 7 para una longitud de 8,    
    //Tamaño Mínimo
    
$min=7;
    
//Tamaño Máximo
    
$max=14;
        
    if(
$may === FALSE)
    {
        
$cadena='0123456789abcdefghijklmnopqrstuvwxyz';
    }
    else
    {
        
$cadena='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    }
    if((
$tam >= $min)&&($tam <=$max))
    {
        
//Generación aleatoria segun sea mayuscula o minuscula.
        
for($i=0;$i<=$tam;$i++)
        {
            
//Guardamos en un arreglo.
            
$pila[]=$cadena{rnd(025)};
        }
        
//Desordenamos el arreglo.
        
shuffle($pila);
        
$retornable='';
        
//Mostramos la contraseña   
        
foreach($pila as $letra => $contrasena)
        {
           
$retornable.=$contrasena;        
        }
        return 
$retornable;
    }

No entendi bien que quieres hacer, supuse que querías retornar la contraseña creada, he modificado un poco el codigo para que lo haga (return $retornable), otra cosa, tienes rand(0, 25), me pareció extraño, pero bueno...

Aún asi, no he entendido bien cual era la duda, cualquier cosa avisa con un post n_n
  #6 (permalink)  
Antiguo 19/06/2011, 09:24
 
Fecha de Ingreso: febrero-2011
Mensajes: 62
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Funcion generar contraseña

Primero muchas gracias

Te explico

La funcion actua correctamente y el echo me da la contraseña generada, pero cuando la llamo desde el script
Código PHP:
if(generar_contrasena()){
$error.="<b>El Nombre De Usuario No Existe.</b<br>";
}
$contrasenagenerada md5($contrasena); 
La variable $contrasena esta vacia.

cuando ejecuto el scrip lo primero que me sale es el valor de $contrasena

Ejemplo:

45fuatf8 se ha enviad a su correo .........................................

Con lo cual la funcion actua bien y lo primero que escribe es el echo y a continuacon el texto que hay para el usuario, pero cuando envio el correo la variable $contrasena esta vacia.

Y la variable $contrasengenerada tambien, asi que en la BBDD inserta un codigo vacio.

No se si ahora me he explicado algo mejor

Un saludo
  #7 (permalink)  
Antiguo 19/06/2011, 10:34
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Funcion generar contraseña

Cita:
if(generar_contrasena()){
es $generar_contrasena con el signo $
__________________
Salu2!
  #8 (permalink)  
Antiguo 19/06/2011, 10:36
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Funcion generar contraseña

Hola,

Seguramente funciona bien tu método, pero, ¿porque no usas el lenguaje PHP?

Código PHP:
function generar_contrasena($len 7$shf false) {
  
$j array_merge(range('a''z'), range('0''9'));
  if (
$shf) {
    
$j array_merge($jrange('A''Z'));
  }
  
shuffle($j);
  
$len min(max($len7), 14);
  return 
join(array_slice($j0$len), '');
}

$contrasena generar_contrasena();
$contrasenagenerada md5($contrasena); 
Saludos,
  #9 (permalink)  
Antiguo 19/06/2011, 15:21
 
Fecha de Ingreso: febrero-2011
Mensajes: 62
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Funcion generar contraseña

Muchas gracias ya esta solucionado.

Un saludo

Etiquetas: contraseña, funcion
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.