0

Captcha - protegendo formulários contra ataques automatizados

criado por Ricardo Maia em 04/04/2006 7:04pm
Pra finalizar esta é a página que processa os dados do formulário!

Note que se ao testar você estiver sempre vendo a mensagem:
Token EXPIRADO! é porque você pode estar demorando demais para digitar os caracteres de validação.

Tente modificar na linha 22:
if ($_POST[ 'token' ] == $_SESSION[ 'token' ] && $tempo_decorrido < 10 )

aumentando o valor de 10 para 30, por exemplo.

(processa.php)
<?php session_start(); ?>
<html>
<head> <title>Captcha</title> </head>
<style>
<!--
        body
{
                font
-family:Geneva, Arial, Helvetica, sans-serif;
                font
-size:12px;
       
}
-->
</style>

<?php
// verificação do token de formulário.
$tempo_decorrido
= time( ) - $_SESSION[ 'hora_token' ];

if( !$_SESSION[ 'formulario_enviado' ] ) {
   
// para fins de teste o tempo de expiração do token foi definido como 10 segundos.
       
if ($_POST[ 'token' ] == $_SESSION[ 'token' ] && $tempo_decorrido < 10 ) {
                echo
" Token válido<br> ";
               
if ($_SESSION[ 'texto_captcha' ] == $_POST[ 'cod_confirmacao' ] ) {
            echo
" Dados conferem!<br> ";

           
//limpando as variáveis de sessão.
            $_SESSION
[ 'texto_captcha' ] = "";
            $_SESSION
[ 'token' ] = "";
            $_SESSION
[ 'texto_captcha '] = "";
               
} else {
            echo
" Dados NÃO CONFEREM!<br><a href=\"form.php\">Voltar</a> ";
               
}
       
} else {
                echo
" Token EXPIRADO!<br><a href=\"form.php\">Voltar</a> ";
       
}

} else {
        echo
" Formulario já processado!<br><a href=\"form.php\">Voltar</a> ";
}

//essa variável de sessão será verificada na página form.php
$_SESSION
[ 'formulario_enviado' ] = TRUE;
?>
</body>
</html>

Boa sorte! E aproveitem!

Comentários:

Nenhum comentário foi enviado ainda.

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)