William Luis

0 %
William Luis
Fullstack Developer
  • Residence:
    Canada
  • City:
    Toronto
  • Age:
    26
French
English
Spanish
html
CSS
Js
PHP
WordPress
  • Bootstrap, Materialize
  • Stylus, Sass, Less
  • Gulp, Webpack, Grunt
  • GIT knowledge

Gerar senha aleatória complexa (PHP e Javascript)

17 de outubro de 2011

[sourcecode language=”php”]
<?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;
}
?>

[/sourcecode]


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:

[sourcecode language=”php”]
<?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′ );
?>

[/sourcecode]

Javascript

[sourcecode language=”html”]</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>

[/sourcecode]

Posted in Dicas, JavaScript, PHPTags:
1 Comment
  • Alex

    Valeu! Obrigado mesmo.

    7:40 2 de junho de 2012 Responder
Write a comment