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:
/*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
Hola, lo que ocurre es que tienes que "devolver" la contraseña, no mostrarla. Para ello, en lugar de echo contraseña; debes escribir return $variable;, donde $variable es la que tiene la contraseña:

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;      
        //}     
    }

    return $pila;
}

$mi_pass_generado = generar_contrasena();
print $mi_pass_generado;

Saludos.

Te me has adelantado... 5 mins. más y tenias la misma respuesta.... xD

Jejejejeje, lo siento :P.
Te me has adelantado... 5 mins. más y tenias la misma respuesta.... xD