由于 Web/HTTP 的流行(Web 基于 HTTP, 超文本传输协议), 人们开发了大量的 Web 开发库, 这使得, 提交一个表单发表评论是一件非常简单的事. 如果使用脚本语言, 甚至能仅用 3, 5 行代码便能解决.
博客防垃圾评论, 是每一个博主十分关心了头疼的问题, 特别是使用了 Wordpress 这类十分流行的开源博客软件, 那么被垃圾评论盯上的机率就更甚了. 同时, 这些软件也提供了防垃圾评论(anti-spam)插件, 用于解决这个问题.
1. 垃圾评论的分类
垃圾评论根据产生方式在可以分为两大类: 人工垃圾评论, 机器人垃圾评论. Continue reading »
Written by ideawu
at 2009-06-27 09:33:30 | tags: WordPress
虽然akismet识别垃圾评论的准确率很高, 但对于我来说, 每天看到垃圾评论队列里有那么多垃圾评论, 还是很不爽. 眼不见为净. 于是自己写了个Wordpress插件, 直接丢弃垃圾评论.
Wordpress只有comment_post, 但没有pre_comment_post事件, 在评论被保存之前触发. 我只好自己加上了. 所以修改了wp-comments-post.php文件.
// 就是这一行, ideawu.net
do_action('pre_comment_post', $commentdata);
$comment_id = wp_new_comment( $commentdata );
$comment = get_comment($comment_id);
插件很简单, 就是利用comment_post事件加入一个隐藏字段, 该字段的值通过客户端JavaScript代码来设置. 提交后和服务器端的值比较, 如果不相同, 说明用户未开启JavaScript, 被认为是垃圾评论. 评论机器人一般不会支持JavaScript.
有需要的朋友给我留言, 我发给你. 欢迎有心的朋友按第一条评论的格式回复进行测试!
Written by ideawu
at 2009-05-03 20:54:28 | tags: WordPress, wordpress插件
从第一次想法到现在好几年, 今天终于把博客迁移到Wordpress上, 欢迎订阅. 近4年来不使用Wordpress, 而是使用自己写的博客程序, 原来有几个: 1. 自己写的程序更快. 2. 自己写的程序用起来更顺手.
因为自己比较熟悉PHP+MySQL, 所以数据迁移很顺利, 原来ideablog中的文章, 评论和留言都迁移过来了, 没有丢失. 而且通过简单的文本替换, 适应了Wordpress的文章显示格式, 保持了原有的文章格式. 当然会有部分格式有问题, 但还未发现.
新博客刚上线没几分钟, 就收到垃圾评论(spam). 还不如我的ideablog, 只用简单的客户端JavaScript代码就可以实现防垃圾评论, 因为spam机器人不会去执行javascript.
欢迎订阅RSS.
Written by ideawu
at 2009-04-30 20:10:14 | tags: WordPress
将下面的函数放到你的主题的 functions.php 文件中:
function theme_echo_pagenavi(){
global $wp_query;
global $request, $posts_per_page, $wpdb, $paged;
$maxButtonCount = 9; //显示的最多链接数目
$current_page = $paged;
$current_page = $paged;
if(empty($current_page)) {
$current_page = 1;
}
$numposts = $wp_query->found_posts;
$max_page = $wp_query->max_num_pages;
$start = max(1, $current_page - intval($maxButtonCount/2));
$end = min($start + $maxButtonCount - 1, $max_page);
$start = max(1, $end - $maxButtonCount + 1);
if($current_page <= 1){
echo "<span>|<</span>";
echo "<span><<</span>";
}else{
echo '<a href="'.get_pagenum_link().'"><span>|<</span></a>';
echo '<a href="'.get_pagenum_link($current_page-1).'"><span><<</span></a>';
}
for($i=$start; $i<=$end; $i++){
if($i == $current_page) {
echo "<span class=\"page_num on\">$i</span>";
} else {
echo '<a href="'.get_pagenum_link($i).'"><span class="page_num">'.$i.'</span></a>';
}
}
if($current_page >= $max_page){
echo "<span>>></span>";
echo "<span>>|</span> ";
}else{
echo '<a href="'.get_pagenum_link($current_page+1).'"><span>>></span></a>';
echo '<a href="'.get_pagenum_link($max_page).'"><span>>|</span></a>';
}
echo " {$current_page}/{$max_page}页, {$numposts}条记录.";
}
在主题的 index.php 文件中这样引用:
<?php theme_echo_pagenavi(); ?>
Written by ideawu
at 2009-03-12 14:47:01 | tags: WordPress
Recent Comments