Gerador de senha aleatória em PHP [UPDATE]

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…

Enviar trackback em ASP

Buenas povo.

Aqui vai o script que desenvolvi aqui para o And After para o envio de trackbacks. Simplifiquei ele, e a forma de pegar as variáveis que utilizei foram via formulário.

<%
url = "https://andafter.org/publicacoes/116.asp"
title = "Enviar trackback em ASP"
excerpt = "No And After já foi explicado como…"
blog_name = "And After"

dados = "url=" & url & "&title=" & title & "&excerpt=" & exerpt & "&blog_name=" & blog_name

dim xmlhttp
set xmlhttp = server.Createobject("MSXML2.ServerXMLHTTP")
urlenvia = "http://urlQUEvaiRECEBERtrackbak.com"

xmlhttp.Open "POST",urlenvia ,false
xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xmlhttp.send DataToSend
%>

Bom, aí está bem simples e acredito que fácil de entender. A parte em vermelho somente monta a linha da variável dados, que contém as informações que serão enviadas para o site especificado na variável urlenvia.

Fiz diversos testes aqui e só consegui fazer o envio com o script colocado no início da p&aaacute;gina, acho que o Objeto MSXML2.ServerXMLHTTP tem que ser criado antes de qualquer outro, levei algum tempo para descobrir o que estava dando erro.

Como está o script não é dinâmico, mas resgatando todas variáveis através do request.form(str) você pode criar um formulário para o envio de trackback ou até criar uma ferramenta que envie trackback para diversas urls junto. Uma dica para quem quer fazer isso é usar o split para separar todas as urls e depois criar um loop, enviando uma trackback para cada url.

Tentei fazer isso com 2 urls e verifiquei que a primeira url foi enviada corretamente, mas a segunda não. Agora não sei se foi porque enviei duas trackbacks para um mesmo domínio e o WordPress bloqueou automaticamente ou se realmente foi algum erro de script. Quando eu testar, volto a escrever sobre o assunto. 😉