Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
sisteminha básico:D Página do Form.
<form action="" method="post" name="form"> Nome: <input name="nome" type="text" maxlength="10">
<br> <?$captcha = base64_encode( date("s") / date("m") ).?> Captcha: <input name="captcha" id="captcha" type="text" class="input_text" >
<input name="captcha1" id="captcha1" type="hidden" value="<? echo $captcha.?>"> <br> <input type="submit" value="enviar"> </form> Página que recebe o form. <?$nome = $_POST['nome']. $captcha1 = strtolower($_POST['captcha1']). $captcha = strtolower($_POST['captcha']). if ( $captcha!= $captcha1 ) { echo "<b> Captcha está incorreto.</b>". exit(). } echo $nome.?>claro, boa dica, eu fiz mais so para dar uma iniciada
e estava esperando sugestões para melhorar o script
e claro que está vuneravel. ;P
mais vamo la fazer um bom! :D
é funcional mas está vulnerável
a chave deve ser secretaguarde-a numa variável de sessão
para fazer isso,
na página Form
na primeira linha, antes de tudo, inicialize a sessão
depois modifique isso:<?
pra isso:
na página que recebe Form, faça a inicialização da sessão, na primeira linha
depois troque isso:
$captcha = strtolower($_POST['captcha']);
por isso
$captcha = $_SESSION['captcha'];
mesmo assim há um meio de burlar
por exemplo, no seu caso você está usando a regra
base64_encode( date("s") / date("m") );
o formato base64 é facilmente identificado, basta olhar o estilo de codificação que ele gera
baseado nisso, um usuário com um pouco de inteligência perceberá que a regra é
base64_encode( date("s") / date("m") );
pra dificultar, basta trocar a regra
base64_encode( rand( 100, 300 ) );
pronto! um numero aleatorio será formado e convertido para base64
as possibilidades de acertar o numero podem ser de 1:1bilhao ou trilhao.. enfim, depende da quantidade de caracteres e sorte em acertar o numero randômico.