Gerar senha aleatória complexa (PHP e Javascript)
<?php function randomPassword( $length = 10, $chars = ’0123456789abcdefghijkLMNPRSTUWXY!@$&*()-+_={}[]:;<>?,.’ ) { $password = ”; for ( $i = 0; $i < $length; $i++ ) { $chars = str_shuffle( $chars ); $char = $chars[0]; $password .= $char; } return strlen( $password ) < $length ? randomPassword( $length, $chars ) : $password; } ?>
Descrição:
Gere senhas randônicas extremamente complexas, combinando números, letras e símbolos.
Sintaxe:
randomPassword( int $length, string $chars[optional] )
Parâmetros:
length: Número de caracteres da senha;
chars: Caracters a serem combinados;
Exemplos:
<?php // Senha com 10 caracteres, // letras, números e símbolos echo randomPassword(); // Senha com 6 caracteres, // letras, números e símbolos echo randomPassword( 6 ); // Senha com 6 caracteres e // apenas letras echo randomPassword( 6, ‘abcdefghijkLMNPRSTUWXY’ ); // Senha com 6 caracteres e letras e números echo randomPassword( 6, ‘abcdefghijkLMNPRSTUWXY1234567890′ ); ?>
Javascript
</pre> <pre id="codigoFonte"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt-br" lang="pt-br"> <head> <title>Gerador de senhas</title> <script type="text/javascript"> <!-- // função dec2hex: converte números decimais em números hexadecimais function dec2hex(numero) { var base = 16; var digito = new Array(); var i = 0; while (numero != 0) { i++; digito[i] = numero % base; numero = Math.floor(numero / base); } value = ""; while (i >= 1) { switch (digito[i]) { case 10: { value += "A"; break } case 11: { value += "B"; break } case 12: { value += "C"; break } case 13: { value += "D"; break } case 14: { value += "E"; break } case 15: { value += "F"; break } default: { value += digito[i]; break } } i--; } return value; } function GerarSenha() { document.forms[0].senha.value = ""; tamanho = document.forms[0].digitos.value; // validar o campo *dígitos* if (tamanho < 1 || isNaN(tamanho)) { alert("Escolha um valor numérico válido para esse campo"); document.forms[0].digitos.focus(); document.forms[0].digitos.select(); return; } // ajusta o tamanho (em pixels) do campo de acordo com o número de dígitos document.forms[0].senha.style.width = (tamanho * 9) + "px"; // códigos ASCII decimais min = 32; max = 126; for (i = 1; i <= tamanho; i++) { caracter = min + Math.floor((Math.random() * (max - min))); // 32 a 126 caracter = "%" + dec2hex(caracter); caracter = unescape(caracter); document.forms[0].senha.value += caracter; document.getElementById("aguarde").innerHTML = "aguarde..."; } document.getElementById("aguarde").innerHTML = ""; } //--> </script> <style type="text/css"> <!-- * {font: 11px Verdana} .campo1 {width: 180px} .campo2 {width: 40px} .campo1, .campo2 {border: solid 1px #CCC} .botao {border: solid 1px #BBB; background-color: #EEE; cursor: pointer} #aguarde {font-style: italic} --> </style> </head> <body> <form action="#" onsubmit="GerarSenha(); return false"> Senha: <input type="text" name="senha" size="30" readonly="readonly" />&nbsp;&nbsp; <input type="submit" value="Gerar senha" /><br /><br /> Dígitos: <input type="text" value="20" name="digitos" size="3" maxlength="2" /> </form><br /> <div id="aguarde"></div> </body> </html>
Alex
Valeu! Obrigado mesmo.