Continuando com a série de posts sobre PHP, segue um script que foi útil para o desenvolvimendo do novo And After.
Por questões de segurança a senha dos usuários ficam criptografadas no banco (MD5) e o processo é irreversível (pelo menos em teoria) – isso impede a recuperação delas e cria a necessidade de regerar uma senha aleatória caso o usuário esqueça a sua.
Baseado em em um script da webtoolkit fiz algumas alterações (insignificantes) para atender exatamente ao que eu precisava, abaixo segue a função generatePassword que recebe um único parâmetro ($length) que indica o tamanho do password gerado.
function generatePassword($length) {
$vowels = "aeiouyAEIOUY";
$consonants = "bdghjmnpqrstvzBDGHJLMNPQRSTVWXZ0123456789";
$password = "";
$alt = time() % 2;
for ($i = 0; $i < $length; $i++) {
if ($alt == 1) {
$password .= $consonants[(rand() % strlen($consonants))];
$alt = 0;
} else {
$password .= $vowels[(rand() % strlen($vowels))];
$alt = 1;
}
}
return $password;
}
O script tem 2 conjuntos de caracteres (nas variáveis vowels e consoants) e intercala um caractere randômico de um grupo com um caractere randômico de outro grupo até a string (nosso password) atingir o tamanho requisitado.
[update]
O Carlos André Ferrari comentou uma outra função, com menos código porém sem intercalar os grupos de caracteres (vogais e consoantes) para gerar a senha, porém igualmente funcional:
function generatePassword($length=6) {
return substr(str_shuffle("aeiouyAEIOUYbdghjmnpqrstvzBDGHJLMNPQRSTVWXZ0123456789"), 0, $length);
}
[/update]
Se você quiser aumentar o nível de segurança pode inserir caracteres especiais em uma das variáveis da string usada…