Habiendo aprendido ya algunas cosas básicas, como autentificación y registro de usuarios, hoy haremos una nueva inmersión en el maravilloso y enredado mundo de PHP.
Lo que haremos será crear un generador de contraseñas aleatorias y darle un poco de estilo para que lo insertemos en nuestros Sitios Web o donde sea que lo necesitemos.
Como siempre, todo el detalle y explicación, después del salto.
Para empezar, lo clásico:
Con esa enorme lista de materiales lista, vamos al procedimiento:
Básicamente lo que haremos hoy consta de 2 pasos, crearemos una código que genere contraseñas aleatoriamente y además un botón para llamar a este código mediante autollamado de página junto con un campo de texto que presentará el resultado, así que vamos a la acción:
1.- Lo primero que haremos será crear un nuevo documento de tipo PHP en Dreamweaver y la llamaremos “generaclave.php”.
2.- Luego, haremos un pequeño formulario, el cual contendrá un campo de texto llamado “clave”, un botón que tenga el texto “Generar Contraseña”, y en action llamaremos a la misma página, o sea, “generaclave.php”. Si tienen dudas de como crear este formulario, pueden revisar este tutorial donde explicamos paso a paso el proceso. Al terminar, deberíamos tener algo como esto:
Formulario
Propiedades del formulario – Click para agrandar
3.- Con nuestro formulario creado, ahora empezaremos a insertar el código PHP que hará la operación. Lo primero que haremos, será insertar antes del comienzo del formulario (en vista de código), el siguiente código:
<?
if(!_$POST)
{
/* Aquí le decimos al interprete “Si no se ha presionado el botón, entonces muestre …” */
?>
Inmediatamente después de eso, insertaremos el código correspondiente a nuestro formulario (así, si no se ha presionado el botón “Generar contraseña” se mostrará el formulario en blanco), y justo después de eso, insertamos este código:
<?
/* Este código dice “En caso contrario, si se ha presionado el botón Generar Contraseña, entonces haga lo siguiente … “
}
else
{
$fuente=”ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789″;
/* Declaramos una variable $fuente la cual contiene todas las letras en mayúscula, minúscula y los números del 0 al 9 */
$clave = “”;
/* Luego declaramos la variable $clave, la cual contendrá la contraseña que generemos, pero partirá en blanco */
for($i=0;$i<8;$i++)
{
/* Luego hacemos un ciclo o bùcle de tipo for, el cual ejecutará su contenido mientras nuestra variable i (que parte en 0) sea menor a 8 (el largo de las contraseñas que generemos), aumentando el valor de i de uno en uno */
$clave .= substr($fuente,rand(0,61),1);
/* Dentro de nuestra variable clave iremos concatenando (uniendo), el resultado de la función substr, la cual tanto en PHP como en otros lenguajes, se encarga de hacer una ‘sub-cadena’ a partir de una cadena determinada (en este caso $fuente, que es la variable que contiene todas las letras y números). Esta función utiliza los siguientes parametros:
substr(cadena de caracteres, posición inicial, largo de la extracción)
En este caso, nuestra cadena de caracteres será la variable $fuente, nuestra posición inicial sera una posición al azar creada con la función rand, la cual busca un número al azar entre 2 valores (en este caso 0 y 61, las posiciones iniciales y finales de las letras o números almacenados en $fuente) y el largo de la extracción será 1, o sea, equivalente a una letra o número.
Toda esta operación se repetirá 8 veces, y cada letra o número que se extraiga se irá uniendo a las anteriores dentro de la variable $clave.*/
}
/* A continuación, presentamos nuevamente el formulario, pero con una pequeña modificación. Como ya generamos la contraseña, en el campo de texto, llenamos el valor “value”, con <? echo ‘$clave’ ?>, o sea, le decimos al interprete que sobre el campo ponga el resultado de la operación que hicimos con anterioridad. */
<form id=”form1″ name=”form1″ method=”post” action=”generaclave.php”>
<table width=”469″ border=”0″>
<tr>
<td width=”159″><label>
/* Aquí añadimos el value */
<input name=”clave” type=”text” id=”clave” value=”<? echo ‘$clave’ ?>” />
</label></td>
<td width=”300″><label>
<input type=”submit” name=”button” id=”button” value=”Generar Contraseña” />
</label></td>
</tr>
</table>
<p> </p>
<p> </p>
<p> </p>
</form>
}
Y listo, con esto tendremos nuestro generador de contraseñas el cual hemos insertado dentro de un pequeño formulario para que quede más amigable. Con el uso de if(!_$POST), hemos utilizado una característica de PHP conocida como “autollamado de páginas”, la que permite llamar a una misma página a través de un formulario y presentar distintos resultados dependiendo del contenido del formulario en sí. En un próximo tutorial entraremos más de lleno en este aspecto, pero es bastante similar a lo que utilizamos aquí.
Algunas consideraciones antes de terminar:
1.- Este es un código bastante básico, ya que lo principal es explicar el funcionamiento del proceso y que puedan tener un generador de contraseñas sin la necesidad de dominar código. A partir de esto se pueden introducir una serie de modificaciones que lo hagan más completo y seguro.
2.- En aspectos de seguridad, si así lo desean, una vez que generan la contraseña, pueden codificarla con alguno de los métodos que PHP presenta, ya sea md5, sha1 o base64encode, como hemos visto en otros tutoriales.
3.- Si desean cambiar el largo de su contraseña, solo deben modificar el numero “8” que pusimos en el búcle for por el largo que deseen.
Y con eso estaríamos, ahora pueden insertar su generador de contraseñas en sus sitios o lo que necesiten, y usarlo sin problemas.
Como siempre, este tutorial ha sido desarrollado, probado y documentado por el equipo de Como Lo Hago, por lo que cuenta con nuestro sello de garantía. Cualquier problema, consulta o comentario que puedan tener, no duden en hacerlo en el área habilitada a continuación.
Y recuerden que en Como Lo Hago estamos al servicio de nuestros lectores, por lo que si hay algo que quisieran hacer y no saben como, pueden realizar una petición en esta página que hemos habilitado, e iremos en su ayuda.
Esperamos que este tutorial haya sido de utilidad para Uds.
Muchas gracias por leer y será hasta una próxima oportunidad.
Staff CLH
10:56:55 pm
Este es un codigito que reforme ( no lo hice entero yo) ya que se utiliza para hacer por ejemplo un capcha, pero tb te sirve para generar claves aleatorias, con un poco mas de desarrollo te puede servir para muchas cosas, les dejo ahi la creatividad
session_start();
$captcha_texto = “”;
function caracter_aleatorio() {
mt_srand((double)microtime()*1000000);
$valor_aleatorio = mt_rand(1,3);
switch ($valor_aleatorio) {
case 1:
$valor_aleatorio = mt_rand(97, 122);
break;
case 2:
$valor_aleatorio = mt_rand(48, 57);
break;
case 3:
$valor_aleatorio = mt_rand(65, 90);
break;
}
return chr($valor_aleatorio);
}
///////// SI LE CAMBIAS EL 6 POR UN MAYOR NUMERO O MENOS NUMERO TE DARA CLAVES CON MAS O MENOS CARACTERES
for ($i = 1; $i <= 6; $i++) {
$captcha_texto .= caracter_aleatorio();
}
echo $captcha_texto; /// con esto despliego la clave
10:58:46 pm
aps una cosa. pa ver las claves solo copia y pega el codigo, para ver como se generan solo actualiza la pagina y veras como cambian
5:11:12 pm
Como recomendacion general… tratemos de evitar los ciclos si es posible… este sirve para crear claves aleatoreas con un nivel de fortaleza mayor.
$fuente=”ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@#$?%&.,_-+”;
$tamano = 5;
$pass = str_shuffle($fuente);
$pass = substr($pass,0,$tamano);
3:42:53 pm
Hola Mario.
Intento usar tu recomendacion pero no me funciona. Cuando hago clic en cl boton no me genera ningun resultado mas que refrescar la pagina rapidamente:
Password Create
<input name="clave" type="text" id="clave" value=" “/>
8:18:46 pm
@mario hernandez: Muchas gracias por tu aporte. Es bueno generar discusión sobre la codificación de este tipo de proyectos, para así poder entregarles varias alternativas a los usuarios.
Saludos
11:00:38 pm
Muchas gracias por el aporte!
Sin embargo no me funcionó el código y por más que intenté arreglarlo mi capacidad no dió para eso, la verdad no se mucho de esto.
Pero en verdad gracias porque con las explicaciones uno va aprendiendo ó comprendiendo cada vez un poco más.
Gracias a Cristian Álvarez por el código generador de captcha, trataré de acoplarlo para que un sistema de usuarios para los que olvidan la contraseña, se genere una nueva pero sin mostrarla, sino que se le envíe por e-mail.
Saludos y gracias!
4:25:21 pm
Buenas, por mas que quise tratar de crear el generador de claves no pude hacerlo, si podrian ayudarme con eso por favor, ademas de crear la pagina de autenticacion de usuarios, soy un novato con Dreamweaver pero me gustaria aprender sobre este tema para asi poder proporcionar una mayor seguridad y privacidad a los datos que se suben en la pagina.
2:10:08 pm
Muchas gracias a mario hernandez me sirvió mucho lo que publico!!