Captcha - protegendo formulários contra ataques automatizados
Esta é a página que contêm o formulário e é onde a imagem será exibida. Ao executar seu projeto abra esta página no browser.
Seguindo a didática do comentário no fonte...
(form.php)
Seguindo a didática do comentário no fonte...
(form.php)
<?php session_start(); // evitando que ao se utilizar o botão voltar do navegador seja apresentada uma imagem já exibida! // >>>>> início da prevenção de cache. header("Cache-Control: no-cache, no-store, must-revalidate"); header("Expires: Sun, 01 Jan 1995 00:00:00 GMT"); if (isset($_SESSION['formulario_enviado']) && $_SESSION['formulario_enviado'] == TRUE){ $_SESSION['formulario_enviado'] = FALSE; header("refresh:0; url=form.php"); } // <<<<<< fim da prevenção de cache. //incluindo o arquivo que contém a função captcha include("captcha.php"); // >>>>> início da prevenção de hacking do formulário. $token = md5(uniqid(rand(), TRUE)); $_SESSION['token'] = $token; $_SESSION['hora_token'] = time(); $_SESSION['texto_captcha'] = captcha ("imagem","enigma2.ttf"); /*OBS: A fonte deve estar no mesmo diretório que a página php. O diretório deve ter permissão de escrita pois o php irá criar uma imagem em tempo de execução. Requer as bibliotecas GD e FreeType. */ // <<<<<< fim da prevenção de hacking do formulário. ?> <html> <head><title>Captcha</title></head> <style> <!-- /* Definições de estilo para apresentação da página. */ body{ font-family:Geneva, Arial, Helvetica, sans-serif; font-size:12px; } #imagem_captcha{ border-style:dashed; border-width:1px; border-color:#CCCCCC; } #cod_confirmacao{ border-style:solid; border-width:1px; border-color:#333333; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px; width:200px; } #btn_submit{ border-style:groove; border-width:2px; border-color:#333333; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px; width:80px; } #btn_submit:hover{ border-style:ridge; } --> </style> <body onLoad="document.getElementById('cod_confirmacao').focus();"> <form action="processa.php" method="post" autocomplete="off"> Informe os caracteres da imagem:<br> <img id="imagem_captcha" src="imagem.png" border="1"><br> <input id="cod_confirmacao" name="cod_confirmacao" type="text" size="10" maxlength="5" value=""><br> <input id="btn_submit" type="submit" value="Enviar"> <input type="hidden" name="token" value="<?php echo $token; ?>"> </form> </body> </html>
Novo Comentário: