Spam, como odeio isso!
25 de Abril de 2007
16.657 spams bloqueados. Basta! Não dá mais. Coloquei uma espécie de CAPTCHA nos comentários (perguntinhas básicas de soma de 2 números). Desculpe-me por este incomôdo, mas apagar 300 spams por dia estava ficando totalmente inviável.
Update: Se você quer adicionar este suporte ao seu blog (Wordpress), adicione o código abaixo ao arquivo "functions.php", presente no diretório do seu tema. Caso ele não exista, crie-o.
<?php
/* author: Nando Vieira <fnando dot vieira at gmail dot com> */
function challenge_check($comment_id)
{
global $wpdb, $user_ID, $comment_count_cache;
if ($user_ID) {
return;
}
$hash = $_POST['challenge_hash'];
$challenge = md5($_POST['challenge']);
$post_id = $_POST['comment_post_ID'];
if ($hash != $challenge) {
$wpdb->query("DELETE FROM {$wpdb->comments} WHERE comment_ID = {$comment_id}");
$count = $wpdb->get_var("select count(*) from $wpdb->comments where comment_post_id = {$post_id} and comment_approved = '1'");
$wpdb->query("update $wpdb->posts set comment_count = {$count} where ID = {$post_id}");
wp_die(__('Sorry, but your answer is incorrect.'));
}
}
function challenge_form()
{
global $user_ID;
if ($user_ID) {
return;
}
$nums = array(rand(1,4), rand(1,4));
$n1 = max($nums[0], $nums[1]);
$n2 = min($nums[0], $nums[1]);
$challenge = ($n1 + $n2);
$hash = md5($challenge);
$question = "Quanto é {$n1} + {$n2}?";
$field = sprintf('<p><label for="challenge">%s</label> <input type="hidden" name="challenge_hash" value="%s" /> <input type="text" name="challenge" id="challenge" size="2" /></p>', $question, $hash);
echo $field;
}
add_action('comment_post', 'challenge_check');
add_action('comment_form', 'challenge_form');
?>
Update: não recebi mais nenhum spam! ;)
- Permalink
- Trackback
- Feed dos comentários
- Ao som de: Consumed – Glory Hole
- Posts relacionados
- Spammers, para variar!
Textos escritos por
Comentários #
Raiz quadrada de... hum... já sei! 6. :)
Que legal esse sistema, gostei... hehehe
Pois é cara, eu usava um plugin assim também mas removi.
Alguns spammers ainda conseguem burlar esse tipo de defesa...
A melhor defesa até agora tem sido o askmet... Esse sim tem funcionado.
Estava recebendo cerca de 40 spams diários, hoje não recebo mais nenhum graças a ele.
@Danilo, mas você ainda tem que remover os spams manualmente, não? Eu uso o askimet, mas ele apenas marca os comentários como spam. Ou estou viajando?
O Akismet marca como Spam e você tem que deletar.
Sabia! ;)
Poxa, aqui nao aconteceu nada.. e ainda deu uma msg de erro ao efetuar logout.. :(
Diego, que versão do WP você está usando? Qual o erro que apareceu?
Nando,
uma pergunta usei seu codigo, e a questão aparece depois do botão submit. Pode ser que meu tema seja diferente do seu na chamada do metodo comment_post sei lá,
tem como vc me passar como fez pra ficar antes disso no seu?
Abs
Marcelo, basta mudar de lugar a chamada para a função
do_action('comment_form', $post->ID);Muito interessante. É só copiar no functions.php?
Podia fazer um plugin com isso. Não ficava melhor?
Alenônimo, dá uma olhada aqui[1] que o Flávio do japs.etc.br já fez isso com o meu código.
[1] japs.etc.br
[...] solução foi implementada pelo Flávio Kaminisse à partir de uma implementação em PHP do Nando Vieira . O código original barrava trackbacks e foi corrigido pelo Flávio e transformado em plugin do [...]
[...] do Wordpress, ele me disse que ele tinha implementado o código e me passou o link do artigo, Spam, como odeio isso!, que continha o código e algumas dicas para [...]
Como evitar spam no seu blog WordPress...
Um dos maiores problemas para quem gerencia um blog, são as mensagens com spam, recebidas pelo arquivo de comentários dos blogs que utilizam o WordPress.
Quando se tem 2 ou 3 spams, é até aceitável, mas quando começa a passar dos 50 por dia, a si...
[...] Comment’s Hash - Comecei a utiliz
No tema que estou modificando nao funciona, veja
http://www.hostip.com.br/blog
[...] aqui o hack do Nando para adicionar CAPTCHA ao Wordpress e se juntar ao Akismet no combate à [...]
Show! Tinha implementado isso em um form de contato de um site. Só que o resultado da soma tinha que ser feito por extenso. =D
não existe outro plugin?
Obrigado pela dica.
Não sou programador em PHP mais estou utilizando sua função a algum temo no meu Blog e funciona perfeitamente.
Parabéns.
Abraço e sucesso!!!
Oi. Eu já tenho usado esse código em meu blog, em http://www.blog.olocutor.com já lá vai para um bom tempo, e ele é mesmo bastante eficiente, até porque eu aumentei o rand para 1/9. Sou cego e esse código é bom pelo detalhe acessibilidade. Mas quando tentei usar o plug-in criado pelo Flávio Theruo Kaminisse
Saturday, comecei a ter erro de feeds, pelo que, o jeito foi mesmo colar o código no arquivo funcction, quando tudo ficou bem e o código passou a cumprir com sua função sem interferir em nada. Para concluir, li que havia uma versão desse código que não era específica para o WP. se não for incômodo, você teria como arrumar essa versão para mim, que eu preciso colocar essa verificação num form que tenho no meu site de Datas Comemorativas, num sistema que não é Word Press.
Desde já, agradeço por qualquer ajuda e pelo código que já uso.
Abraços
Deixe um comentário