Como primeiro tutorial ensinarei a fazer captchas igual a essa:
Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
Para funcionar corretamente é necessário PHP4 ou superior, a biblioteca GD
E de algumas fontes para dá esse efeito nas letras: Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
Iremos criar uma página chamada captcha. Php, que gerarar a imagem;
Para guardar as letras da imagem, usaremos sesions, então no início do código terá:
Agora criaremos uma função chamada captcha, com três argumentos:
$width, largura da imagem, com valor default 120
$height, altura da Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... com valor default 40 e
$ch, quantidade de caracteres na imagem com valor default 5
Para que o Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... não confunda os caracteres, criaremos uma váriavel contendo os caracteres possiveis:
No caso, retirei a letra l e o número 1, vocês podem escolhar quais querem
Agora criaremos o código, dando um loop:
Criaremos a imagem, definiremos o tamanho da fonte, cor do texto,a cor do fundo e a cor dos rabiscos:
Agora "riscaremos" a imagem:
Usaremos mais de uma fonte, criarei um array com as fontes outro
para guardar qual fonte usar em cada caracter e outro para guardar a
"altura" do caracter:
Medimos onde cada caracter fica, para depois centralizar:
Caso a largura de todos os caracteres seja maior que a largura da imagem, fazemos outra:
Agora colocamos os caracteres na imagem:
Definimos a imagem como uma png e mostramos ao navegador:
Agora guardamos os caracteres em um sesion para depois ser verificado:
Por fim fechamos a função e chamamos ela:
Lembrando, para colocar a captcha na sua pagina coloque:
E para verificar se o usuário digitou corretamente, coloqueno início:
E verifique mais ou menos assim:
Fim.
Créditos indisponíveis.
Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
Para funcionar corretamente é necessário PHP4 ou superior, a biblioteca GD
E de algumas fontes para dá esse efeito nas letras: Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
Iremos criar uma página chamada captcha. Php, que gerarar a imagem;
Para guardar as letras da imagem, usaremos sesions, então no início do código terá:
Código:
session_start();
$width, largura da imagem, com valor default 120
$height, altura da Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... com valor default 40 e
$ch, quantidade de caracteres na imagem com valor default 5
Código:
function captcha($width='120',$height='40',$ch='5') {
Código:
$pos = '23456789bcdfghjkmnpqrstvwxyz';
Agora criaremos o código, dando um loop:
Código:
$i = 0; $code = ""; while ($i < $ch) { $code .= substr($pos, mt_rand(0, strlen($pos)-1), 1); $i++;
Código:
$font_size = $height * 0.6; $image = imagecreate($width, $height); $bg_color = imagecolorallocate($image,240,247,255); $text_color = imagecolorallocate($image, 0, 0, 150);<p>$n_color = imagecolorallocate($image, 120, 160, 180);</p><p> </p> }
Código:
for($i=0; $i<($width*$height)/3; $i++){ imagefilledellipse($image, mt_rand(0,$width), mt_rand(0,$height), 1, 1, $n_color); } for( $i=0; $i<($width*$height)/160; $i++ ) { imageline($image,mt_rand(0,$width),mt_rand(0,$height), mt_rand(0,$width),mt_rand(0,$height), $n_color); }
para guardar qual fonte usar em cada caracter e outro para guardar a
"altura" do caracter:
Código:
$font = array("1.ttf","2.ttf","3.ttf", "4.ttf","5.ttf","6.ttf"); $rand = array($characters); $rand2 = array($characters);
Código:
$ii = 0; $x = 0; $y = $height; while($ii < $ch){ $ver = substr($code,$ii,1); $f = mt_rand(0,count($font)-1); $rand[$ii] = $f; $rand2[$ii] = $x; $textbox = imagettfbbox($font_size,0,$font[$f], $ver); $y = ($y>($height - $textbox[5])/2) ? ($height - $textbox[5])/2 : $y; $x += $textbox[4] + 4; $ii++; }
Agora colocamos os caracteres na imagem:
Código:
$x = ($width - $x)/2; $i = 0; while($i < $characters){ imagettftext($image, $font_size, 0, ($rand2[$i] + $x), 30, $text_color, $font[$rand[$i]], substr($code,$i,1)); $i++; }
Código:
header('Content-Type: image/png'); imagepng($image); imagedestroy($image);
Código:
$_SESSION["seguranca"] = $code;
Código:
} $width = isset($_GET['width']) ? $_GET['width'] : '120'; $height = isset($_GET['height']) ? $_GET['height'] : '40'; $ch = isset($_GET['ch']) ? $_GET['ch'] : '5'; captcha($width,$height,$ch)
Código:
<img src="captcha.php?width=largura&height=altura&ch= quantidade_de_caracteres" alt="" />
Código:
session_start();
Código:
if($_SESSION["seguranca"] != $POST["campo"]){ exit("Caracteres incorretos!"); }
Créditos indisponíveis.
Comment