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.)