Boas. A nível de direitos sobre o código, devo remeter-vos para o meu primeiro artigo desta rubrica.
Esta semana trago-vos um conjunto de funções que os ajudarão a gerar uma password (ou qualquer outra string de caracteres aleatórios).
A princípio pode-vos parecer muito grande e a verdade é que é possível reduzir a segunda função de outras formas, mas penso que esta é mais fácil de entender e personalizar.
<?php
function generatePassword($length = 8 ) {
$pwd = '';
if($length > 0) {
for($i=0;$i<$length;$i++) {
mt_srand((double)microtime() * 1000000);
$x = mt_rand(1,65);
$pwd .= assignValue($x);
}
}
return $pwd;
}
function assignValue($x) {
switch($x) {
case 1 : { $r = "a"; } break;
case 2 : { $r = "b"; } break;
case 3 : { $r = "c"; } break;
case 4 : { $r = "d"; } break;
case 5 : { $r = "e"; } break;
case 6 : { $r = "f"; } break;
case 7 : { $r = "g"; } break;
case 8 : { $r = "h"; } break;
case 9 : { $r = "i"; } break;
case 10: { $r = "j"; } break;
case 11: { $r = "k"; } break;
case 12: { $r = "l"; } break;
case 13: { $r = "m"; } break;
case 14: { $r = "n"; } break;
case 15: { $r = "o"; } break;
case 16: { $r = "p"; } break;
case 17: { $r = "q"; } break;
case 18: { $r = "r"; } break;
case 19: { $r = "s"; } break;
case 20: { $r = "t"; } break;
case 21: { $r = "u"; } break;
case 22: { $r = "v"; } break;
case 23: { $r = "w"; } break;
case 24: { $r = "x"; } break;
case 25: { $r = "y"; } break;
case 26: { $r = "z"; } break;
case 27: { $r = "0"; } break;
case 28: { $r = "1"; } break;
case 29: { $r = "2"; } break;
case 30: { $r = "3"; } break;
case 31: { $r = "4"; } break;
case 32: { $r = "5"; } break;
case 33: { $r = "6"; } break;
case 34: { $r = "7"; } break;
case 35: { $r = "8"; } break;
case 36: { $r = "9"; } break;
case 37: { $r = "A"; } break;
case 38: { $r = "B"; } break;
case 39: { $r = "C"; } break;
case 40: { $r = "D"; } break;
case 41: { $r = "E"; } break;
case 42: { $r = "F"; } break;
case 43: { $r = "G"; } break;
case 44: { $r = "H"; } break;
case 45: { $r = "I"; } break;
case 46: { $r = "J"; } break;
case 47: { $r = "K"; } break;
case 48: { $r = "L"; } break;
case 49: { $r = "M"; } break;
case 50: { $r = "N"; } break;
case 51: { $r = "O"; } break;
case 52: { $r = "P"; } break;
case 53: { $r = "Q"; } break;
case 54: { $r = "R"; } break;
case 55: { $r = "S"; } break;
case 56: { $r = "T"; } break;
case 57: { $r = "U"; } break;
case 58: { $r = "V"; } break;
case 59: { $r = "W"; } break;
case 60: { $r = "X"; } break;
case 61: { $r = "Y"; } break;
case 62: { $r = "Z"; } break;
case 63: { $r = "!"; } break;
case 64: { $r = "?"; } break;
case 65: { $r = "%"; } break;
}
return $r;
}
?>
Modo de utilização:
Como sempre, é bastante simples e intuitivo, segue um exemplo de como gerar uma password com 8 caracteres e outra com 15.
<?php $pwd1 = generatePassword(); $pwd2 = generatePassword(15); ?>
Nota: Se acrescentarem ou retirarem algum caracter do função assignValue(), lembrem-se de alterar o número máximo na função generatePassword() na linha onde tem “$x = mt_rand(1,65); ”.
Notem que para não haver problemas, convém que na função assignValue() os números sejam sequenciais, ou seja, que não salte de um número para outro que não o seguinte.
Qualquer dúvida ou sugestão, estão completamente à vontade.
Como vou entrar em exames (para a semana), etc., se quiserem enviar as vossas propostas para esta rubrica, agradeço, pois será difícil escrevê-la até ao final de Julho.