Captcha mais complexo


Resumo
Nome: Captcha mais complexo
Linguagem: PHP
Autor:
Download

Como explicado no artigo anterior relativo à criação de um script que gera CAPTCHA's complexos uma maneira de aumentar a eficiência desse código era utilizar a função imagettftext do PHP. Para tal basta acrescentar as seguintes linhas de código no início do script:

# Criar array com os ficheiros ttf
$dir_local = 'ttf/';
$fontes = array();
$dir = opendir($dir_local);

while($ficheiro = readdir($dir)) {
     if (substr($ficheiro, -4, 4) == ".ttf")
          $fontes[] = $ficheiro;
}
$fontes_size = count($fontes)-1;

O que estas linhas fazem é escrever num array ($fontes) um conjunto de caminhos relativos para ficheiros .ttf que irão ser usados pela função imagettftext. Onde a variável $dir_local contém o caminho relativo para o directório que contém os ficheiros .ttf e o array $fontes contém, no final, o nome de cada um dos ficheiros ttf. Este array podia estar definido directamente no código em vez de, a cada execução, estar a ir ler a directoria mas desta forma se se quiser adicionar um novo tipo de letra é só meter o ficheiro .ttf na pasta e escusa-se de se mexer em código.

Depois, é só preciso trocar a linha que chamava a função imagetext() pelas seguintes:

$angulo = mt_rand(0, 90) - 45;
$fonte = $fontes[mt_rand(0, $fontes_size)];
imagettftext($img, mt_rand(12,18), $angulo, $i*20+10, mt_rand(20, 40), $cor_texto, $dir_local.$fonte, $car);

A função imagettftext permite escrever texto com ângulo. Na primeira linha o ângulo que o texto toma é definido aleatoriamente entre -45º e 45º (para evitar que apareçam letras ao contrário)

Na segunda linha é escolhida, entre as disponíveis, qual a fonte a usar, de uma forma aleatória.

Por fim na última linha é escrita a letra em questão. De notar que, para evitar que as letras se sobrepusessem aqui a coordenada x é fixa para cada letra apenas variando a coordenada y.

E está pronto! Código para download na caixa à direita ->

Resultado Final:

Captcha Complexo

JRomão | Contacto | Termos de Uso
© 2009 - 2012 JRomão

Download Opera - World's fastest and most secure Web browser.