typecho|抵御垃圾评论的偏方

tengxunyun cera

最近小白的站点总有莫名其妙的老外来回复垃圾评论。小白的站点都开启了外链转置内链。所以在我这里是没法做SEO的。完全不明白这些老外留言的意义何在。

以上都是废话,下面记录下修改的笔记。

垃圾评论信息:


可以看出来都是机器人而且不是中国人。

抵御方法:

开启仅中文浏览器能回复。(感谢typecho居然有此神奇的功能)

  • 在当前主题模板中找到comments.php文件,在其中找到以下代码;
    <?php if($this->allow('comment')): ?>
  • 将代码修改为;
    <?php if($this->allow('comment') && stripos($_SERVER['HTTP_ACCEPT_LANGUAGE'], 'zh') > -1): ?>

原理:

浏览器判断是否中文语系,只有(zh, zh-cn, zh-tw, zh-hk)才可以评论。当然如果自己用的浏览器不是中文的,就得添加中文到浏览器才能回复评论了。

cera aliyun tengxunyun cloudiplc

相关推荐

WordPress代码实现评论算术验证码

WordPress的垃圾评论真的很烦人,为了解决垃圾评论问题,站长们一般选择需要注册登陆才能评论,或者采用验证码来阻止大部分的恶意评论。说真的,不建议使用验证码,博客站也不建议注册登陆评论,这样会降低用户评论的积极性。其实除了这两种方法,还有很多限制评论的办法,代码狗博客几乎没有垃圾评论,机器评论更是不可能。我采用的评论限制方法是,限制重复评论、限制评论间隔时间、禁止全外语评论、禁止关键词黑名单评论、禁止指定用户评论。这里就不介绍了,今天说WordPress代码实现评论算术验证码的功能。 核心代码 在你的主题目录下的functions.php文件中添加下面两个函数。 //评论添加验证码 function spam_protection_math(){ $num1=rand(0,9); $num2=rand(0,9); echo “请输入 $num1 + $num2 = ? 的计算结果:\n”; echo “\n”; echo “\n”; echo ““; } function spam_protection_pre($commentdata){ $sum=$_POST[‘sum’]; switch($sum){ case $_POST[‘num1’]+$_POST[‘num2’]: break; case null: wp_die(‘对不起: 请输入验证码。返回上一页‘,’评论失败’); break; default: wp_die(‘对不起: 验证码错误,请返回重试。’,’评论失败’); } return $commentdata; } if($comment_data[‘comment_type’]==”){ add_filter(‘preprocess_comment’,’spam_protection_pre’); } 一个是生成验证码表单的代码,一个是验证提交的验证码是否正确的代码,这里的验证方式不够严谨,简单用用还是可以的,不影响使用。 简单使用 在你的主题评论模板comments.php文件中找到你的评论表单位置,然后在适当位置添加如下代码引用。 以上代码来自博客吧,博客吧评论使用了的,我也测试过,可以使用,但是表单的css就得你自己写了,不然很难看。

WordPress查询指定时间范围内最热门|评论最多文章

WordPress查询指定时间范围内最热门、评论最多文章仅仅靠WordPress提供的函数是不行的,我们需要按照自己的需求条件执行数据库查询才能获得对应数据,比如本站首页的热门讨论模块,就是采用了数据库查询的方式取得的文章数据。 这两天趁放假,将博客的主题功能优化了下,新增了一些功能,显示效果做了一些细节上的调节。大家可能发现了,我在首页新增了一个热门讨论模块。这个模块里显示的是一个月时间内的评论次数最多的文章,总共显示5篇,并按照评论数量从高到底排列。下面来看看具体怎么实现的,部分代码来自网友。 实现代码 将以下代码复制到你的主题目录下functions.php文件中。 /* 某段时间内评论最多最热文章*/ function most_comm_posts($days=7, $nums=5) { //$days参数限制时间值,单位为‘天’,默认是7天;$nums是要显示文章数量 global $wpdb; $today = date(“Y-m-d H:i:s”); //获取今天日期时间 $daysago = date( “Y-m-d H:i:s”, strtotime($today) – ($days * 24 * 60 * 60) ); //Today – $days $result = $wpdb->get_results(“SELECT comment_count, ID, post_title, post_date FROM $wpdb->posts WHERE post_date BETWEEN ‘$daysago’ AND ‘$today’ ORDER BY comment_count DESC …

Typecho显示网站运行时间

教程: 复制以下代码到主题文件夹下functions.php中。建议放置到底部?> 前。 // 设置时区 date_default_timezone_set(‘Asia/Shanghai’); /** * 秒转时间,格式 年 月 日 时 分 秒 * * @return html */ function getBuildTime(){ // 在下面按格式输入本站创建的时间 $site_create_time = strtotime(‘2016-09-22 00:00:00’); $time = time() – $site_create_time; if(is_numeric($time)){ $value = array( “years” => 0, “days” => 0, “hours” => 0, “minutes” => 0, “seconds” => 0, ); if($time >= …

利用Typecho的is函数智能投放谷歌|自动广告|

Typecho中内置了强大的is函数,用于判断“我在哪里?”。这就可以让我们在投放谷歌AdSense的『自动广告』的时候更加的灵活,在投放谷歌AdSense广告的站长们应该都知道『自动广告』会根据网页布局自动选择广告尺寸和位置来投放,而在对站点首页的“智能化”处理上总是差强人意,所以为了保证『自动广告』的投放效果和用户体验,我们就可以借助is函数来指定『自动广告』只投放在文章页面。   is函数可以用于判断index/archive/category/tag/date/single/page/post/attachment等,具体用法见下文描述。注意哈,这些页面是有相互包含的关系的,具体在使用过程中要多尝试下。 $this->is(‘index’) 从字面可见,判断当前页面是否是首页 $this->is(‘archive’) 判断当前页面是否是归档页,譬如主页,分类文章页,标签文章页,日期归档文章页 $this->is(‘category’),或者$this->is(‘category’,’some_slug’) 判断当前页面是否为分类文章页,如果加第二个参数slug,则进一步判断是否为特定的分类,譬如默认分类的slug是“default” $this->is(‘tag’)或者$this->is(‘tag’,’some_slug’) 判断当前页面是否是标签文章页,如果加第二个参数slug,则进一步精确判断,原理同category $this->is(‘date’)或者$this->is(‘date’,’some_range’),其中some_rage可以是year/month/day 判断当前页面是否是日期归档页,如果指定第二个参数,则进一步精确判断。 $this->is(‘single’) 用于判断是否是内容页面,所谓内容页面,包括文章页、独立页面和附件显示页 $this->is(‘post’)或者$this->is(‘post’,$post_id) 用于判断是否是内容页,加第二个参数则进行精确判断 $this->is(‘page’)或者$this->is(‘page’,’some_slug’) 用于判断当前页面是否为独立页面,加第二个参数表示精确判断,譬如$this->is(‘page’,’about’)则表示判断当前页面是否是about页面 $this->is(‘attachment’)或者$this->is(‘attachment’,$attachment_id) 同上,用于判断附件页面。 综上所述,我们的『自动广告』代码就可以如下这样投放(在当前主题目录下的header.php里): <?php if ($this->is(‘post’)): //如果是文章则允许载入“自动广告”代码 ?> <script async src=”//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js”></script> <script> (adsbygoogle = window.adsbygoogle || []).push({ google_ad_client: “ca-pub-6265969660632907”, enable_page_level_ads: true }); </script> <?php endif; ?> 可以看到这里用到的is函数是$this->is(‘post’),这个是仅仅在“文章”页面,如果你需要包括独立页面可以使用$this->is(‘single’),具体大家看上面的函数简介就能看出区别了。 如果你的服务器PHP开启了缓存(OPCache),那么最好重启一下php-fpm进程让代码执行以下。慢慢体验『自动广告』的强大吧!

微信扫一扫,分享到朋友圈

typecho|抵御垃圾评论的偏方