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.