Go to English Blog

Spam, como odeio isso!

Leia em menos de um minuto

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! ;)