Contraseñas aleatorias en PHP

por

Muchas veces nos encontramos con el problema de que se nos olvidan nuestras contraseñas, por ello, hoy ne día todas las páginas web incorporan u sitema de recuperación de contraseñas muy simple en el que te suele hacer una pregunta secreta o directamente te envían tu contraseña a tu mail en el caso de que lo requieras.

Eso si, estas contraseñas suelen ser nuevas contraseñas generadas de forma aleatoría mediante un algoritmo matemático muy simple.

Pues bien, hoy os voy a enseñar como podeis generar estas contraseñas aleatorias y posteriormente enviarlas al mail del usuario.

Para empezar, debería ser necesario que el usuarios contestase a su pregunta secreta para la recuperación de su contraseña. Una vez comprobada que la respuesta a la pregunta secreta es correcta pasariamos a generar la contraseña aleatoria mediante el siguiente código:


<?php

function clave_aleatoria($long){

	$salt = 'abchefghknpqrstuvwxyz';	
	$salt .= 'ACDEFHKNPRSTUVWXYZ';	
	$salt .= strlen($salt)?'2345679':'0123456789'; 	
	if (strlen($salt) == 0) {		
		return '';	
	} 	
	$i = 0;	
	$str = ''; 	
	srand((double)microtime()*1000000); 	
	while ($i < $long) {		
		$num = rand(0, strlen($salt)-1);		
		$str .= substr($salt, $num, 1);		
		$i++;	
	} 
	
	return $str;
}

?>

Esta función requiere que le pasemos la longitud de la contraseña que queremos generar simplemente y genera una contraseña alfanumérica aleatoria de esa longitud.

A la hora de usarlo en nuestro archivo php de gestión de información deberiamos de implementar algo como el siguiente ejemplo:


<?php

include('funciones.php')

@session_start();

$nueva_clave=clave_aleatoria(5);
mail('prueba@prueba.com', "Chekis.es", "Su nuevo password 
es:".$nueva_clave.".");


?>

Como podemos ver, incluimos un archivo 'funciones.php' que contiene la función implementada. Lo siguiente que hacemos es generar la clave a través de la función y enviamos la clave a través del mail al usuario correspondiente con la función 'mail(dirección-destino,remitente,mensaje)'.

Podríamos completar este código actualizando la clave en nuestra base de datos, eso si, como toda contraseña debería de estar encriptada en nuestra base da datos, a través, por ejemplo, de del algoritmo md5 de la siguiente forma:


<?php

$clave_encriptada=md5($nueva_clave);

?>

De esta forma nos aseguramos de que la información no se envíe por la red tal cual. No es un sistema infalible pero es útil.

Espero que os haya gustado.

COMENTARIOS

DEJA TU COMENTARIO