3298 registros
1 hoje
3 nesta semana
35 neste mês![]() | 73% | Brasil (44969) |
![]() | 5% | Portugal (2842) |
![]() | 3% | EUA (2049) |
![]() | 0% | Rússia (250) |
![]() | 0% | Holanda (237) |
| Hoje: | 1763 |
| Ontem: | 2555 |
| No mês: | 35836 |
| Mês passado: | 25815 |
| Total: | 61651 |
| Recorde: | 3037 |
| No dia: | 04.03.10 |
| Leituras hoje: | 21168 |
| Leituras Total: | 268092 |
| Bots hoje: | 403 |
| Dados desde: | 16.02.2010 |
|
Qua 17 Set 2008 20:51 |
|
|
1. A imagem de fundo
Seja qual for a imagem que você escolher, salve-a no formato png e dê-lhe o nome de captcha.png. Esta imagem de fundo vai ser carregada usando a função do PHP imagecreatefrompng( ): $imagemCaptcha = imagecreatefrompng("captcha.png");
2. O texto do CAPTCHAPara carregar um texto na imagem de fundo será preciso acionar a função PHP imageloadfont( ). O parâmetro desta função é o nome da fonte. As fontes TTF (true type) costumam dar problemas, então nem pensar. O PHP parece gostar apenas de fontes GD. Será que você vai parar por aqui porque não tem fontes do tipo GD? Nem pensar! Procure algumas fontes GD na net ou na seção de downloads aqui da Aldeia, ou ainda escolha uma fonte TTF qualquer que esteja na sua máquina e use o WFtoPF para transformá-la em GD. Tá feito o jogo! 3. String randômicaDepois de criar a imagem de fundo e carregar a fonte, chegou a hora de gerar uma string única como texto do CAPTCHA. Para isto podemos usar a função MD5 do PHP: $textoCaptcha = substr(md5(uniqid('')),-9,9); A função uniqid( ) gera uma string única. Esta é transformada num hash MD5 (se você não sabe o que é isto, dê uma procurada na seção de Criptografia da Aldeia para se informar). Depois disto, retiramos os últimos 9 caracteres do hash com a função substr( ) do PHP. Este exemplo usa 9 caracteres, mas você pode optar por quantos quiser. Esta string precisa ser armazenada de alguma forma para que possa ser comparada posteriormente com a que o usuário fornecer. Você pode armazená-la numa variável session, num cookie ou na sua base de dados. A escolha é sua. Para colocar a string na imagem de fundo usamos a função imagestring( ). 4. Mostrando a imagemA função para mostrar a imagem no formato PNG é imagepng( ). A forma de colocar a imagem na página é muito simples - basta chamar uma imagem dando como fonte o script php: <img src="captcha.php" width="233" height="49">
Coloque o script, a imagem de fundo e a fonte num mesmo diretório e faça a chamada. O resultado é o seguinte: O script captcha.php<?php /*** * File : captcha.php * Description : Cria uma imagem captcha e guarda o texto numa variável session * Autor : Kiran Paul V.J. aka kiranvj aka human * Licença : Freeware * Última atualização : 22-Aug-2007 */ // Inicializa os dados da session session_start(); // Definir o header como image/png para indicar que esta página contém dados // do tipo image->PNG header("Content-type: image/png"); // Criar um novo recurso de imagem a partir de um arquivo $imagemCaptcha = imagecreatefrompng("captcha.png") or die("Não foi possível inicializar uma nova imagem"); //Carregar uma nova fonte $fonteCaptcha = imageloadfont("anonymous.gdf"); // Criar o texto para o captcha $textoCaptcha = substr(md5(uniqid('')),-9,9); // Guardar o texto numa variável session $_SESSION['session_textoCaptcha'] = $textoCaptcha; // Indicar a cor para o texto $corCaptcha = imagecolorallocate($imagemCaptcha,0,0,0); // Escrever a string na cor escolhida imagestring($imagemCaptcha,$fonteCaptcha,15,5,$textoCaptcha,$corCaptcha); // Mostrar a imagem captha no formato PNG. // Outros formatos podem ser usados com imagejpeg, imagegif, imagewbmp, etc. imagepng($imagemCaptcha); // Liberar memória imagedestroy($imagemCaptcha); ?> FonteArtigo de human publicado no code.box. |
| Última atualização ( Qui, 18.09.2008 12:05 ) |