phpbb3的anti-spam

phpbb3自身带的anti-spam系统已经被破解,导致论坛上出现了大量的垃圾帖子和用户。
经搜索,可以暂时使用PHPBBCHINA上的这个方案:

Administration Control Panel -> Users and Groups -> Custom profile fields
[Create new field]: antibot (Field identification: antibot, Field type: Numbers)
Display in user control panel: Yes
Display on registration screen: Yes
Required field: Yes
Field name: Anti-Bot check
Field description: 如果您不是机器人,请输入一个130到139之间的数字:
[Profile type specific options]
Lowest allowed number: 130
Highest allowed number: 139
没有用mod,目前为止好像有效,是俺搞完后做的记录,看不明白的可以问,

还有一个办法是使用初始发帖审核,可阻止垃圾帖泛滥,但不能应对注册,设置很简单:
Administration Control Panel -> General -> Post settings
Enable queued posts: Yes
默认的最大帖子数是3,也就是说,只有前3帖通过审核发表后,用户才能自由发帖。
否则你发了他也不显示。。。
注意这个是3.0.0以后版本才有的功能(3.0.0本身木有)

整合phpbb3和mediawiki

mediawiki是1.11.0版本,phpbb3 rc7,整合起来也还是比较简单的。
下载整合插件,解开到extension目录下,然后修改LocalSettings.php文件,在最后添加一下内容,也可以参考其readme。

/*—————–[ Everything below this line. ]—————–*/

// PHPBB User Database Plugin. (Requires MySQL Database)
require_once ‘./extensions/Auth_phpbb.php’;

$wgAuth_Config = array(); // Clean.

$wgAuth_Config[‘WikiGroupName’] = ‘Wiki’; // Name of your PHPBB group
// users need to be a member
// of to use the wiki. (i.e. Wiki)

$wgAuth_Config[‘UseWikiGroup’] = true; // This tells the Plugin to require
// a user to be a member of the above
// phpBB group. (ie. wiki) Setting
// this to false will let any phpBB
// user edit the wiki.

$wgAuth_Config[‘UseExtDatabase’] = true; // This tells the plugin that the phpBB tables
// are in a different database then the wiki.
// The default settings is false.

/*-[NOTE: You only need the next four settings if you set $wgAuth_Config[‘UseExtDatabase’] to true.]-*/
// $wgAuth_Config[‘MySQL_Host’] = ‘host’; // phpBB MySQL Host Name.
// $wgAuth_Config[‘MySQL_Username’] = ‘username’; // phpBB MySQL Username.
// $wgAuth_Config[‘MySQL_Password’] = ‘password’; // phpBB MySQL Password.
// $wgAuth_Config[‘MySQL_Database’] = ‘database_name’; // phpBB MySQL Database Name.

$wgAuth_Config[‘UserTB’] = ‘phpbb_users’; // Name of your PHPBB user table. (i.e. phpbb_users)
$wgAuth_Config[‘GroupsTB’] = ‘phpbb_groups’; // Name of your PHPBB groups table. (i.e. phpbb_groups)
$wgAuth_Config[‘User_GroupTB’] = ‘phpbb_user_group’; // Name of your PHPBB user_group table. (i.e. phpbb_user_group)
$wgAuth_Config[‘PathToPHPBB’] = ‘../phpbb3/’; // Path from this file to your phpBB install.

// Local
$wgAuth_Config[‘LoginMessage’] = ‘You need a phpBB account to login.‘; // Localize this message.
$wgAuth_Config[‘NoWikiError’] = ‘You are not a member of the required phpBB group.’; // Localize this message.

$wgAuth = new Auth_phpBB($wgAuth_Config); // Auth_PHPBB Plugin.

然后还需要修改Auth_phpbb.php,查找

if (md5($password) == $faryMySQLResult[‘user_password’] && $this->isMemberOfWikiGroup($username))

替换为:

require_once $this->_PathToPHPBB . ‘includes/functions.php’;
if (phpbb_check_hash($password, $faryMySQLResult[‘user_password’]) && $this->isMemberOfWikiGroup($username))

最后要到论坛上建立对应的用户组,并添加用户。

参考:
1 http://www.mediawiki.org/wiki/Extension:PHPBB/Users_Integration

发现一个PHPBB RC5的BUG

已经报告到给官方了。
是local_upload的问题,估计之前没有人使用这个函数,所以一直没发现。
调用的时候会报这个错误:

Notice: in file /includes/functions_upload.php on line 580: mime_content_type() [function.mime-content-type]: can only process string or stream arguments

一直跟踪下来,发现这个$filename是一个空变量,应该是用$source_file这个变量。

phpbb 3.0 rc4发布

PHPBB3.0 RC4发布,修正了一系列的BUG,升级部分做了一些增强。详细情况请参考官方说明

在RC1到RC2的升级中,可以进行自动的升级。从RC2之后,好像需要手工确认了,不知道这个改进是好还是不好。
同时,在RC4升级过程中,若你使用了其他语言包,需要注意更新对应的语言包,或者,根据这个帖子进行简单的修改。

dallas2 wrote:I don't know if this is the right thing to do, but in your language pack find common.php file and open it. In that file find:

'NEWEST_USER' => 'Our newest member %s%s%s',

(of course, this second line will be in your language). Remove two of those "%s%s%s" so that the final line looks like this:

'NEWEST_USER' => 'Our newest member %s',

This removes the error line for me.

转换vbb 3.0.3到phpbb3

集思学院已经用了很长时间的vbb3.0.3,现在有些功能在我们的服务器已经出问题了,而且不想再跟vbb了,因为数字流域论坛已经转换到phpbb了,为了以后维护方便,决定从vbb3.0.3转换到phpbb 3 rc1。(估计RC2版本就要出来了,BUG已经很少了)

因为之前已经写了一个webwiz到phpbb的转换程序,所以再写vbb3到phpbb3的转换程序,比上次要轻松不少,但webwiz的设计思想就是来源于phpbb,所以很多库结构都非常像,而vbb的结构和phpbb有较大差异,在调试过程中还是耗费了大量的时间,回头来看,大约耗费了有一个礼拜的时间。感觉我都能提供有偿论坛转换服务了,哈哈。

转换过程:
首先要进行数据库的UTF8转换。之前论坛采用的是gb2312编码,但论坛上有台湾的注册用户,原来也能显示繁体中文,所以应该采用的是gbk或gb18030的编码。
在进行数据库的备份之前,要在原来的vb论坛后台把附件的存贮方式修改为文件方式,上传头像的存贮方式也修改为文件方式,而customprofilepic我没有找到对应的phpbb设置,所以这一块就直接丢弃了。
然后导出数据库:

mysql -uroot --add-drop-table --default-character-set=utf8 cngis > cngis.sql

进行编码的转换:

iconv -c -f gb18030 -t utf8 cngis.sql > cngisutf8.sql

然后修改此sql文件,替换所有的utf8为utf8,并在文件的开始处添加:


SET NAMES utf8;
SET CHARACTER_SET_CLIENT=utf8;
SET CHARACTER_SET_RESULTS=utf8;

然后新建一个数据库cngisutf8,作为我们的测试数据库并尝试导入此sql文件。

mysql -uroot cngisutf8 < cngisutf8.sql

若在导入过程中没有错误,那么恭喜你,你太幸运了。
我在这一步中遇到错误,导致我以为是中文编码的问题,还以为繁体中文无法正常转换过来呢,后来经过多次测试,发现是转换后的sql文件里存在歧义字符:

\'

导致mysql无法导入,若你也有这个问题,直接去掉那个反斜线就可以了。

安装一个全新的phpbb3。

拷贝我写的vbb3.0.x转换器到phpbb3的install/convertors目录下,并运行相应的转换程序。
在我的转换程序中,给phpbb3默认的数据库结构中添加了两个字段:
一个是users表里添加了一个salt字段,这个是为了无缝转换论坛密码使用的。
一个是topics表里添加了一个goodnees字段,这个是因为我原来的vbb3中使用了精华插件,若你没有使用,可以把相关部分注释掉。
修改论坛的登录程序,使原来的用户可以直接登录,就是修改includes/auth/auth_db.sql文件。

// Check password ...
// added for vb3 conversion
if (!$row['user_pass_convert'] && (md5($password) == $row['user_password']
or md5(md5($password).$row['salt'])==$row['user_password']))
{
if (md5($password)!=$row['user_password'])
{
// Unconverted password
$sql = 'UPDATE ' . USERS_TABLE . '
SET user_password = "'.md5($password).'"
WHERE user_id = ' . $row['user_id'];
$db->sql_query($sql);
}

if ($row['user_login_attempts'] != 0)
{
// Successful, reset login attempts (the user passed all stages)
$sql = 'UPDATE ' . USERS_TABLE . '
SET user_login_attempts = 0
WHERE user_id = ' . $row['user_id'];
$db->sql_query($sql);
}

同时,前面的$sql语句中要添加一个字段:salt。
或者,也可以直接使用我提供的auth_db.php文件。

要注意,这个转换程序对自定义头像导入的功能不细致,还需要进一步处理,但我的论坛上已经够用了,若你的论坛有问题,请反馈给我。
同时,对用户的多组功能也不细致,因为我的论坛上只有2个用户是多组,而且只多1个组,因此转换程序在这儿也进行了简化。
在使用时,请根据自己的实际情况作调整!

授权:GPL2
致谢:
1. shely@ubuntu-cn irc,在编码转换问题上提供了大力帮助。
2. vb3_2phpbb的转换程序,在遇到问题时,首先就参考了这个转换程序。

下载:vb3.0.x convertor

phpbb3下的中文搜索设置

开始还以为不支持,在这里找到的答案:
http://www.phpbbchina.com/forum/viewtopic.php?f=5&t=814

出现上述问题的原因主要是词频阈值的设定问题,我将其改为90,重新索引,好了,庆贺一下吧。
若还有问题,请将搜索设定->搜索后端改为fulltext native,重新索引数据库,该ok了吧?

phpbb3下的avatar设置

从WEBWIZ直接转换过来的avatar开始不能直接在phpbb3的控制面板里显示,但在帖子里显示是没有问题的。
在IRC上求教后,方才知道需要把avatar都要拷贝到images/avatars/gallery/下的一个子目录里,而不能直接拷贝到gallery目录下面。

hi, how to display avatar gallery? It is not shown in my phpbb3 forum.
and I have change the images/avatars/gallery to mode 777
I can upload avatar from my computer, and that does work.
Have you enabled the gallery avatar setting in the Admin control panel?
yes, I do
and the gallery images are inside subforums inside the gallery folder?
sorry, I don't understand your meaning.
the images do not just go inside the gallery folder
they have to be inside subfolders
the images are in images/avatars/gallery/ directory
so they must inside a sub-directory?
they need to be in subfolders so for example /gallery/cars/
the subfolders become the categories in gallery selection part of the UCP
so inside images/avatars/gallery/ you need other folders which will then contain the images
oh, yeah, it does work now! thank you, karlsemple !