Spammers, para variar!

15/06/07

Alguns spammers são insistentes. Para eles, uma solução um pouco mais pesada.

function deny_access()
{
    global $wpdb;
 
    $blacklist = get_option('blacklist_keys');
    $ips = preg_split("/\r?\n/", $blacklist);
 
    if (in_array($_SERVER['REMOTE_ADDR'], $ips)) {
        header("HTTP/1.0 403 Forbidden");
        die();
    }
}
 
deny_access();

A lista de IPs pode ser configurada no admin do WP em "Options › Discussion › Comment Blacklist".

WordPress: Comment Blacklist

Basta adicionar ao seu arquivo "functions.php".

Spam, como odeio isso!

25/04/07

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

Novo Layout

22/04/07

Se você está lendo este post pelo seu leitor de feeds, dá um pulo aqui no Simples Idéias para ver como ficou a nova versão. Acabei de colocar no ar! Se encontrar algo quebrado, avise-me, OK?

A principal diferença deste tema é que ele precisa de resolução mínima de 1024 pixels de largura. Mas se você usa uma resolução inferior, não se preocupe! Vou colocar ainda hoje uma opção para navegar no tema antigo.

O que você achou? Tem alguma sugestão ou crítica?

Update: Se você utiliza uma resolução com largura inferior a 1024 pixels de largura, uma mensagem com o link para o tema anterior aparece. Abaixo você tem os links para ambas as versões.

Aviso para usuários com largura inferior a 1024 pixels