IPS 中文支持论坛 - IPS Chinese Support Community: [转载]在IPB 1.31上增加reCAPTCHA防垃圾注册模块 - IPS 中文支持论坛 - IPS Chinese Support Community

跳转到内容

第一页
  • 您无法发起一个新主题
  • 您无法回复此主题

[转载]在IPB 1.31上增加reCAPTCHA防垃圾注册模块

#1 已离线   Hyson 

  • 新手上路
  • 点子
  • 用户组: Member
  • 文章数: 15
  • 注册日期: 2008-05-01

  发表于 2008-12-09 14:35:10

文章图片
以下这篇文章是转的,我只是大体小翻译一下,我自己用的IPB1.31上使用这个办法修改,只要动两个文章,增加一个reCAPTCHA的文件即可。

由于自己不懂代码,因此发上来请大家一起看一下。IPB高版需要购买,对于公网上的IPB论坛,目前比较好的我认为仍然是IPB 1.31,因此希望这个问题可以解决(解决了注册页面,但如果在回复贴子的页面上也插入就更好,更能防BOT 机器人,但不知道如何处理)。

各位同学也可以到以下这个链接直接看原文
http://shriker.ca/resources/mods/ipb-131-r...n-registration/

修改的文件有两个:
/sources/Register.php
/Skin/*/skin_register.php ——此处星号在我的机器上是S1

关于注册reCAPTCHA的帐号及获取KEY号就不讲了,这个大家很容易取得,一个是公KEY,一个是私KEY。会在文件修改中用到。

另外,到官站下载最新文档,为 http://code.google.com/p/recaptcha/downloa...l:phplib-Latest 解开包后取主文件recaptchalib.php传至sources目录下,即与register.php同目录。

下面开始修改register.php

function show_reg_form($errors = "") {   
global $ibforums, $DB, $std;

后加
require_once('recaptchalib.php');   
$publickey = "..."; // 此处填写公KEY


if ($ibforums->vars['bot_antispam'] == 'gd')
{
$this->output = str_replace( "<!--{REG.ANTISPAM}-->", $this->html->bot_antispam_gd( $regid ), $this->output );
}
else if ($ibforums->vars['bot_antispam'] == 'gif')
{
$this->output = str_replace( "<!--{REG.ANTISPAM}-->", $this->html->bot_antispam( $regid ), $this->output );
}

此后新加
$this->output = str_replace( "<!--{REG.RECAPTCHA}-->", recaptcha_get_html($publickey), $this->output );


接着继续:
function create_account()
{
global $ibforums, $std, $DB, $print, $HTTP_POST_VARS;

这段后加的内容比较多
require_once('recaptchalib.php');
$privatekey = "..."; // you got this from the reCAPTCHA site
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);


以下是在register.php文件中修改的最后一部分了
//+--------------------------------------------
//| Check the reg_code
//+--------------------------------------------

其后增加:
if (!$resp->is_valid)
{
$this->show_reg_form('err_reg_code');
return;
}


接着修改另一个文件,skin_register.php
<!--{REG.ANTISPAM}-->

上面这一段在文件中出现两次,每一次后增加
<!--{REG.RECAPTCHA}-->


然后上传这两个修改过的文件以及前文提到的那个LIB文件,就可以了。

以上是转载的,我翻译过来了,应当没有什么错误,然后我自己测试却没有看到注册页上出现这个RECAPTCHA的界面,原因不明,希望大家看一下。

原因找到,我也写在论坛里了
http://forums.bizedu...p?showtopic=895
0

#2 已离线   Hyson 

  • 新手上路
  • 点子
  • 用户组: Member
  • 文章数: 15
  • 注册日期: 2008-05-01

发表于 2008-12-09 16:32:05

已经成功了,最后对于有一些论坛,还要到后台同步一下。
另外,如果只需要RECAPTCHA的话,还要在后台安全模块中关掉GDI的那个数字验证。
0

#3 Guest_DeadFire_*

  • 用户组: Guest

发表于 2008-12-10 10:07:25

你真行,从半夜两点弄到半夜四点。

为啥非要用1.31呢,升级多好。
0

#4 已离线   Hyson 

  • 新手上路
  • 点子
  • 用户组: Member
  • 文章数: 15
  • 注册日期: 2008-05-01

发表于 2008-12-24 19:38:05

浏览文章引用框(DeadFire @ 2008-12-10,10:07 AM)

你真行,从半夜两点弄到半夜四点。

为啥非要用1.31呢,升级多好。

这是最后一个不要钱的版本,而且效率也不错,其它的功能我暂时都没有需要。这次本来不想麻烦的,因为找了很多地方都没有给IPB131加RECAPTCHA的,但是论坛的假注册又很麻烦,我关掉注册很久了,又有影响,所以最后还是采用了这个不升级的方案。
0

#5 Guest_DeadFire_*

  • 用户组: Guest

发表于 2008-12-24 21:29:08

恩,我那个论坛也是,天天都有机器人来注册,系统自带的那个验证码看样子已经被破解了。我都改admin通过的方式了。每天从俄罗斯过来的机器注册那个多呀。

希望3.0能把验证码功能加强。

reCAPTCHA的这个验证码有点太难了,人眼都得费半天劲还很难弄对。
0

分享主题:


第一页
  • 您无法发起一个新主题
  • 您无法回复此主题