给EMLOG评论框加上复选框[√]防止垃圾评论

注:本文章撰写于2013-03-05,考虑到部分博客仍然在使用这种方法,故于2018-07-31人力导入。
我不推荐在AI技术已经如此发达的今天继续使用这种方法防御垃圾评论。

这是打√的验证机制,打√至少比原生的验证码方便,比滑动条减少文件加载。只要能防住机器刷评论就行。手工垃圾评论不怕。现在把方法无偿分享出来,供各位有需要的emer使用。

友情提示:少数垃圾评论来自手机版,如需对手机版进行防护请到此贴 http://zhizhe8.net/?post=205,本贴仅用于防护普通灌水机在电脑版灌水


1. 添加代码到 模版/module.php

1
2
<label for="wmzz_comc">
<input type="checkbox" value=9 id="wmzz_comc" name="wmzz_comc" required="required" autocomplete="on" required title="发表评论确认框:请勾选我再发表评论!">

2. 修改

/include/controller/comment_controller.php

1
2
3
4
if(!$_POST['wmzz_comc']==9) {
emMsg('评论失败:您未选中发表评论确认框');
exit;
}

如果此方法被机器人作者知道,请自行修改Value的值,值随便


另附:/include/controller/comment_controller.php修改方法

放置于

1
2
if($Comment_Model->isLogCanComment($blogId) === false) {
emMsg('评论失败:该日志已关闭评论');

的前面,即:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
$Comment_Model = new Comment_Model();
$Comment_Model->setCommentCookie($name,$mail,$url);
if($_POST['wmzz_comc']==9)
{
}
else
{
emMsg('评论失败:您未选中发表评论确认框');
exit;
}
if($Comment_Model->isLogCanComment($blogId) === false) {
emMsg('评论失败:该日志已关闭评论');
} elseif ($Comment_Model->isCommentExist($blogId, $name, $content) === true) {
emMsg('评论失败:已存在相同内容评论');
} elseif ($Comment_Model->isCommentTooFast() === true) {
emMsg('评论失败:您提交评论的速度太快了,请稍后再发表评论');
} elseif (empty($name)) {
emMsg('评论失败:请填写姓名');
} elseif (strlen($name) > 20) {
emMsg('评论失败:姓名不符合规范');
} elseif ($mail != '' && !checkMail($mail)) {
emMsg('评论失败:邮件地址不符合规范');
} elseif (ISLOGIN == false && $Comment_Model->isNameAndMailValid($name, $mail) === false) {
emMsg('评论失败:禁止使用管理员昵称或邮箱评论');
} elseif (!empty($url) && preg_match("/^(http|https)\\:\\/\\/[^<>'\\"]*$/", $url) == false) {
emMsg('评论失败:主页地址不符合规范','javascript:history.back(-1);');
} elseif (empty($content)) {
emMsg('评论失败:请填写评论内容');
} elseif (strlen($content) > 8000) {
emMsg('评论失败:内容不符合规范');
} elseif (ROLE == 'visitor' && Option::get('comment_needchinese') == 'y' && !preg_match('/[\\x{4e00}-\\x{9fa5}]/iu', $content)) {
emMsg('评论失败:评论内容需包含中文');
} elseif (ISLOGIN == false && Option::get('comment_code') == 'y' && session_start() && $imgcode != $_SESSION['code']) {
emMsg('评论失败:验证码错误');
} else {
$Comment_Model->addComment($name, $content, $mail, $url, $imgcode, $blogId, $pid);
}
}
}


转载请遵守 CC BY-NC-SA 4.0 协议并注明来自:给EMLOG评论框加上复选框[√]防止垃圾评论

Loading...

电子邮件地址不会被公开。 必填项已用 * 标注

Powered by Kenvix Comment Server v1.0