Boas,
Muitos ja devem ter visto imagens para proteger os nossos sites de bots.
Como funciona o sistema:
1º » Gerar 5 números de dois dígitos (entre 10 e 99 inclusive)
2º » Guardar os números gerados numa sessão
3º » Atribuír diferentes fontes aos 5 números como forma de evasão a bots mais 'evoluidos'
4º » Atribuír um ângulo a cada um dos 5 números também como forma de evasão a bots mais 'evoluidos'
Source
<?php
//Em todas as paginas deveremos iniciar a sessão, caso contrario as variaveis serão perdidas
session_start();
srand((double)microtime()*1234567);
// Iremos abrir um fundo personalizado, algo que ligue a imagem ao nosso site
$image = imagecreatefromgif("fonts/1.gif");
//Definimos a cor do texto (RGB) de acordo com a imagem de fundo, neste caso usamos a cor preta
$textcolor = imagecolorallocate($image,0,0,0);
// Definimos agora os 5 números e os respectivos tipos de letra
$font1 = "fonts/Arial.ttf";
$text1 = rand(10, 99); // Here is our text
$font2 = "fonts/comic.ttf";
$text2 = rand(10, 99);
$font3 = "fonts/impact.ttf";
$text3 = rand(10, 99);
$font4 = "fonts/verdana.ttf";
$text4 = rand(10, 99);
$font5 = "fonts/Arial.ttf";
$text5 = rand(10, 99);
//Vamos juntar os 5 números para mais tarde comparar com os dados introduzidos no formulario
$_SESSION['number'] = $text1 . $text2 . $text3 . $text4 . $text5;
//Vamos agora introduzir o texto, com diferentes fontes, posições e ângulos
imagettftext($image, 30, 20, 90, 55, $textcolor, $font1, $text1);
imagettftext($image, 30, -10, 125, 55, $textcolor, $font2, $text2);
imagettftext($image, 30, 10, 178, 55, $textcolor, $font3, $text3);
imagettftext($image, 30, -5, 215, 55, $textcolor, $font4, $text4);
imagettftext($image, 30, -8, 260, 55, $textcolor, $font5, $text5);
//Como é um ficheiro php devemo definir que se trata de uma imagem definindo o cabeçalho
header("Content-type: image/jpeg");
//Mostramos a imagem
imagejpeg($image,'',90);
//Removemos os dados temporarios da memoria
imagedestroy($image);
?>
Na página do formulario devem colocar:
» campo para introdução dos 10 dígitos
» imagem gerada (<img src="img.php">)
Na página de verificação devem colocar:
» comparação entre o campo e o valor da imagem $_SESSION["number"]
NOTAS:
O php deve estar compilado com suporte GD e freetype
Deverão colocar as fontes e o fundo da imagem no directorio 'fonts'