Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

erikoliv

[Resolvido] Captcha simplificado

Recommended Posts

Olá!! Continuando meu código de formulário com action mail.php (link do tópico), eu tentei escrever um tipo de captcha bem simplificado onde eu adicionei ao meu formulário .html um campo para inserir o resultado de somatória pré-determinada:

 

<li>
<label for="simplecaptcha">verificação de segurança:</label>
<input type="text" name="simplecaptcha" id="simplecaptcha" placeholder="Quanto é 1+3?" required class="required number">
</li>

 

e no meu arquivo .php eu escrevi uma validação singela para enviar o formulário caso o resultado inserido pelo usuário fosse certo e redirecionado caso estivesse errado:

 

$simplecaptcha = Trim(stripslashes($_POST['simplecaptcha']));

// verificação do simple captcha
$var = '4'; 

if ($simplecaptcha == $var) {


	// envia o email 
	$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");

}

else{
	header('Location: verificacao.html'); // página de erro da verificação de segurança
}


if ($success){
 header('Location: enviado.html'); // redireciona para a página enviado 
}
else{
   header('Location: erro.html'); // redireciona para a página de erro geral de envio
}

 

O que está acontecendo é que por minha falta de conhecimento em PHP quando o usuário insere um número de verificação diferente de $var (que é o resultado de 1+3) o php não redireciona para verificacao.html e sim para erro.html

 

O jeito que eu escrevi o php pula o a condição do primeiro if:

else{
header('Location: verificacao.html'); // página de erro da verificação de segurança
}

 

e vai para a condição do segundo if:

else{
header('Location: erro.html'); // redireciona para a página de erro geral de envio
}

 

Se alguém puder me ajudar com esta lógica eu ficaria muito grato!!!!

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

PRONTO!! Pesquisei um pouco sobre if ,elseif e else neste link: ApPHP

 

E reformulei meu código para:

$var = '4';
$success = header('Location: enviado.html');

$EnviaEmail = "";
if ($simplecaptcha == $var) {
	// send email 
	$EnviaEmail = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>") . $success;
}

elseif ($simplecaptcha > $var) {
	$EnviaEmail = header('Location: verificacao.html');
}

elseif ($simplecaptcha < $var) {
	$EnviaEmail = header('Location: verificacao.html');
}

else{
	$EnviaEmail = header('Location: erro.html');
}

 

Esta foi uma solução prática e rápida que encontrei para evitar spam em minhas páginas de formulário, apesar de ser fácil de humanos contornarem, impede que robôs submetam o formulário, já que para validar é preciso iserir o número 4 no campo verificação de segurança, e a única instrução para isso está argumentada em forma de placeholder:

 

<li>
<label for="simplecaptcha">verificação de segurança:</label>
<input type="text" name="simplecaptcha" id="simplecaptcha" placeholder="Quanto é 1+3?" required class="required number">
</li>

 

Valeu pessoal!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.