
以下这篇文章是转的,我只是大体小翻译一下,我自己用的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 = "..."; // 此处填写公KEYif ($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

说明

转载到专栏









