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: