Script: Formulário Anti-Spam | André Buzzo
contato@andrebuzzo.com.br | (11) 9-8551-3500 | facebook | skype:andrebuzzowebdesign

Script: Formulário Anti-Spam

Publicado na categoria Banco de Scripts com 8.736 visualizações e 27 comentários

Banco de Scripts - Formulário AntiSpam - André Buzzo Webdesign

index.php

<form action="retorna-cadastro.php" method="post">
<fieldset><legend>Formulário para cadastro</legend>
<table>
<tbody>
<tr>
<td><span class="invisivel">Por favor, não preencha esse campo, ele serve apenas para bloquear envio de spams!</span></td>
<td><span class="invisivel"> <input type="text" name="antispam" value="zero" /></span></td>
</tr>
<tr>
<td><label for="Nome">Nome:</label></td>
<td><input type="text" name="nome" /></td>
</tr>
<tr>
<td><label for="E-mail">E-mail:</label></td>
<td><input type="text" name="email" /></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Efetuar Cadastro" /></td>
</tr>
</tbody>
</table>
</fieldset>
</form>

retorna-cadastro.php

<?php

$spam = $_POST['antispam'];
$nome = $_POST['nome'];
$email = $_POST['email'];

if ($spam != "zero") {
echo "<p>Não preencha esse campo! Seu cadastro, não pôde ser efetuado! Preencha novamente!</p>";
echo "<p><a href='index.php'>Voltar</a></p>";
} else {
if (($nome == "") || ($email == "")){
echo "<p>Caro usuário, nenhum campo pode ficar em branco! Preencha corretamente!</p>";
echo "<p><a href='index.php'>Voltar</a></p>";
return false;
}
if(substr_count($email, "@") == 0 || substr_count($email, ".") == 0) {
echo "<p>Caro usuário, nenhum campo pode ficar em branco! Preencha corretamente!</p>";
echo "<p><a href='index.php'>Voltar</a></p>";
return false;	
}

$headers = "Content-type:text/html; charset=UTF-8";
$headers = "From: $email";
$para 	 = "contato@andrebuzzo.com.br";
$mensagem .= "De: $nome";
$mensagem .= "E-mail: $email";

$envia = mail($para, "Cadastro no site", $mensagem, $headers);

echo "<p><strong>$nome</strong>, seu cadastro foi efetuado com sucesso! Obrigado!";
echo "<p><a href='index.php'>Voltar</a></p>";
}

require 'conexao.php';

$insere = ("INSERT INTO cadastro (id, nome, email, codStatus) VALUES ('NULL', '$nome', '$email', '0')");

$insereBanco = mysql_query($insere);

?>

estilo.css


@charset "utf-8";
/* CSS Document */

* body {
margin:0;
padding:0;
font-family:Verdana, Arial, Helvetica, sans-serif;
font-size:12px;
color:#000;
}

form span {
visibility:hidden;
display:none;
font-weight:bold;
}

form legend {
padding:5px 10px;
font-weight:bold;
font-size:11px;
color:#fff;
background-color:#900;
}

form input {
padding:5px;
background-color:#f2f2f2;
font-weight:bold;
font-size:11px;
}

form input:hover {
padding:5px 10px;
background-color:#3399FF;
border:1px solid #000;
}

form input:focus {
padding:5px 10px;
background-color:#369;
border:2px solid #333;
}

conexao.php

<?php

$servidor= "localhost";
$usuario = "seuUsuario";
$senha   = "suaSenha";
$banco = "seuBancoDeDados";
$conexao = mysql_connect($servidor, $usuario, $senha, $banco);
$conecta = mysql_select_db($banco);

if (!$conecta) {
	echo "Não foi possível se conectar ao banco!";
} //else {
	//echo "Conectado com sucesso ao banco <strong>$banco!</strong>";
//}
?>

Voltar à página anterior!

  • Adilson Rumão

    Olá André o Site que mencionei estava for ado ar até hoje, virou o mês foi liberado novamente. E verificando agora já está com 320 spam. Tenho uma área onde os clientes dizem o que acham dos serviços da empresa e ele sempre cadastra estes spam mesmo usando a técnica que você nos ensinou. Lhe enviei outro dia meus scripts, não sei se você recebeu. Teria alguma dica a mais para me dar por favor? se possível claro.

    • Fala Adilson!

      Velho, não recebi seus códigos. Até mandei um e-mail para você nesse endereço que informou no comentário (eu vejo mas não publico o endereço!). Mas não recebi um retorno seu.

      Forte abraço.

      Até mais!

  • Adilson Rumão

    Olá André bom dia, apliquei isso no meu Site e coloquei também um esqueminha de Captcha, mas mesmo assim continuo recebendo vários Spans. O que poderia ser? Tem alguma dica para dar? Desde já agradeço pela atenção. Te mandei um e-mail hoje pois não consegui mandar meu código por aqui.

    • Fala Adilson!

      Na realidade não era para você receber … rs ..vou ver seu código lá no e-mail. Você não consegue postar o código aqui nos comentários por “questões de segurança” ok?

      Abraços meu velho!

  • Paulo

    onde acho o codigo conexao.php eu mesmo tenho q fazer uma pagina ? nao aparece para pegar o codigo em cima!

  • Graziele

    Olá André,
    estou fazendo uma video aula sua (Sistema de Comentários – parte 2) e preciso dos codigos do “retorna-cadastro.php”, poderia mandar para mim?

    Obg

    • Olá Graziele!

      Segue abaixo o código do retorna-cadastro.php ok? Estou publicando também no banco de scripts!

      <?php
       
      	$spam = $_POST['antispam'];
      	$nome = $_POST['nome'];
      	$email = $_POST['email'];
       
      		if ($spam != "zero") {
      			echo "<p>Não preencha esse campo! Seu cadastro, não pôde ser efetuado! Preencha novamente!</p>";
      				echo "<p><a href='index.php' rel="nofollow">Voltar</a></p>";
      		} else {
      			if (($nome == "") || ($email == "")){
      				echo "<p>Caro usuário, nenhum campo pode ficar em branco! Preencha corretamente!</p>";
      					echo "<p><a href='index.php' rel="nofollow">Voltar</a></p>";
      						return false;
      			}
      				if(substr_count($email, "@") == 0 || substr_count($email, ".") == 0) {
      					echo "<p>Caro usuário, nenhum campo pode ficar em branco! Preencha corretamente!</p>";
      						echo "<p><a href='index.php' rel="nofollow">Voltar</a></p>";
      							return false;	
      				}
       
      					$headers = "Content-type:text/html; charset=UTF-8";
      					$headers = "From: $email";
      					$para 	 = "contato@andrebuzzo.com.br";
      						$mensagem .= "De: $nome";
      						$mensagem .= "E-mail: $email";
       
      							$envia = mail($para, "Cadastro no site", $mensagem, $headers);
       
      								echo "<p><strong>$nome</strong>, seu cadastro foi efetuado com sucesso! Obrigado!";
      									echo "<p><a href='index.php' rel="nofollow">Voltar</a></p>";
      		}
       
      		require 'conexao.php';
       
      			$insere = ("INSERT INTO cadastro (id, nome, email, codStatus) VALUES ('NULL', '$nome', '$email', '0')");
       
      					$insereBanco = mysql_query($insere);
       
       ?>

      Obrigado!

      Abraços!

  • Wi

    bom

  • Thiago Cardoso

    Fala André. uma duvida meu amigo.

    tem como colocar dois Endereços de email no $para dentro do arquivo “retorna-cadastro.php”?

    Abraços meu velho

    • Fala Thiago!!

      Dá sim cara…é só copiar e colar mais um campo da variável PARA ok?

      Abraços!

  • ThomasHP

    Olá andré Buzzo, Meu nome é Thomas, faço parte da 1ª turma de programação do SENAI de Balneário Camboriú-SC, sigo suas dicas e seus videos no seu site, e preciso da sua ajuda!!
    vc tem um video de comentario em php, eu segui o vídeo a risca, más, no final deu erro, quero saber se posso te mandar por e-mail, para vc dar uma olhada!! por favor e obrigado

    • Fala Thomas!

      Fico muito grato por usar minhas vídeo aulas no seu desenvolvimento meu amigo!!

      Te mandei um e-mail sobre o seu problema ok?

      Abraços!

  • Luis carlos

    aqui esta o link

    http://pontoprojeto.com.br/aqui/

    desculpe forão tres campos

    • Fala Luis!!!

      Cara, me mande o seu arquivo em php no meu e-mail, por favor!!! É nele que provavelmente, está o problema!!

      Mande para o contato@andrebuzzo.com.br

      Abraços!

  • Luis carlos

    Bom dia andre tudo bem..

    parabens pelos trabalhos.

    Preciso de uma ajudinha.. no formulaio eu coloquei mas 2 campos telefone, comentarios certo.

    Porem quando a mensagem chega no email, ela chega toda fora de ordem tipo tudo bagunçado. teria como deixa as mensagem de cada campo embaixo da outra.

    Outra coisa ele não esta salvando as msg no banco, vai para email mas não para banco.

    abraços

  • Bruno

    No meu caso eu ja fiz isso 3 vezes, editei 3 temas e deixei do jeito que eu queria, Mas so tirei coisas, nd de inserir coisas no tema. Particularmente ainda não sei montar um do zero. Mas se da para ter uma ideia de como editar bora la….rsrsrs.

    Abusando da sua boa vontade…tem algum script que antes de inserir no banco os email, verifica se tem algum repitido. No caso esse script que vc passou ele trava quando ha duplicidade…pq coloquei que o campo email eh único.

    Flws Vlw =D

    • Então velho..começar do zero um layout pro wordpress é meio trabalhoso…. para fazer uma aula dessas, compensaria fazer um curso e vendê-lo, pra ser bem sincero….rs

      Quanto a inserir algo dentro do wordpress, ele tem umas certas características diferentes de outras plataformas…aí que tá o problema….

      Eu coloquei aqui no site algumas tags do WordPress, para implementar algumas funcionalidades…. quiser dar uma olhada:

      Template Tags – WordPress

      Abraços!

  • Bruno

    Vlw Tuco, resolvido…rsrsrs
    Aproveitando eu não pesquisei ainda, mas sugiro uma video aula de como montar um tema em wordpress, ainda não achei video aulas ensinando.

    Flws ate mais.

    • Blz!!

      Sugestão anotada!!

      Poderia ser uma VA ensinando a estilizar um template baixado?

      Abraços!

  • Bruno

    No Caso so tenho os emails, num tem nomes.

    • Coloca nos dois campos, nome e email, como $linha[0] então!

      Resolve o problema também! rs

      Abraços!

  • Bruno

    Estou rodando em servidor web, mas o seguinte ele enviou, mas demora de mais para chegar…no caso mandei era de madruga, ai hj de manha apareceu. Me tira outra dúvida por favor, estou com uma lista com uns 3 mil emails…como inserir tudo de uma vez para enviar a newsletter? pq cadastrar 1 a 1 sem chance…rsrsrs.

    Flws Tuco

    • Fala Bruno!

      Tem um jeito sim de colocar esses e-mails de maneira automatica no banco de dados. Pode ser dê um trampinho pra você “arrumar o arquivo”, mas para inserir no banco é bico!

      Vamos ao código!

      [php]
      <?

      include "conexao.php";

      ?>

      <?php

      $tabela = "nome-da-tabela"; //tabela do banco
      $arquivo = ‘http://www.seudomino.com.br/sua-pasta/seu-arquivo.txt’;// aquivo a ver importado txt ou
      //$arquivo = ‘teste.csv’;// aquivo a ver importado csv do execel

      $arq = fopen($arquivo,’r’);// le o arquivo txt

      while(!feof($arq))
      for($i=0; $i<1; $i++){
      if ($conteudo = fgets($arq)){//se extrair uma linha e não for false
      $soma++; // $soma recebe mais 1 ==== em quanto o existir linha sera somada aqui
      $linha = explode(‘;’, $conteudo);// divide por coluna onde tiver ponto e virgula
      }

      $sql = "INSERT INTO nome-da-tabela (id, nome, email, codStatus) VALUES (‘NULL’,’$linha[0]’,’$linha[1]’,’0′)"; // nos numeros do colchete, você colocará o campo que está sendo utilizado do seu arquivo
      $result = mysql_query($sql) or die(mysql_error());
      $linha = array();// linpa o array de $linha e volta para o for
      }
      echo "quantidade de linhas importadas = ".$soma;

      ?>
      [/php]

      Aqui, você pode tanto usar um arquivo CSV como um TXT…. só lembrando do seguinte:

      Nosso banco contém 4 campos: id, nome, email, codStatus

      Portanto, seu arquivo pode ter apenas duas colunas: uma com o nome e outra com o email… dessa maneira, no código postado acima, vc vai usar, na hora de inserir dentro do banco, os seguintes valores:
      id = NULL (porque o ID é auto-increment)
      nome = $linha[0] (porque é primeira coluna do seu arquivo!)
      email = $linha[1] (porque é a segunda linha do seu arquivo!)
      codStatus = ‘0’ (porque sempre que for 0 nesse campo, será enviado o e-mail!)

      Lembrando sempre que um array começa pelo 0 (zero) beleza?

      Abraços meu velho!

  • Bruno

    Ahhhh, Excelente Video aula. Parabéns!

  • Bruno

    Eai Andre blz?

    Me da um help, o script cadastra no banco normal, mas não envia o email.

    • Fala Bruno!

      Seguinte…vc tá rodando o script localmente? Se positivo, ele não envia o email localmente… o script roda somente em servidor web….

      Abraços!