📄 vbb2lb5000.cgi
字号:
#!/usr/bin/perl
###############################################
# vBB -> LB5000 用户转换 1.0b
#
# 版权所有:雷傲工作室 www.leoboard.com
#
# 程序制作 : 花无缺 (Ifairy Han)
# webmaster@leothreads.com
#
# 上传到你的服务器,要支持DBI::MYSQL哦
# 如果不行,你在本地安装PERL和DBI驱动
# 然后在本地转换好
# 由于vbb密码使用了md5数据模式转换后用户原密码无效
# 需要重新提取密码
###############################################
use strict;
use DBI;
use CGI qw(:standard);
#host
my $host="localhost";
#database user
my $user="root";
my $password="";
# vBulletin database name and password
my $vbName = "vbulletin";
my $lb5000member = "/path/to/LB5000 members dir/"; # 请输入 LB5000 用户资料所在的目录的绝对路径,最后不要遗漏 / ,注意设置 777 属性 。
################# 以下部分无需修改
my $ending = ".cgi"; # LB5000 的用户数据文件后缀为 .cgi
my $dbh=DBI->connect("DBI:mysql:$vbName:$host",$user,$password) or die $!;
# Print HTTP header
print "Content-Type: text/html\n\n";
my $startTime = time();
my $totalMember = 0;
my $totalCategory = 0;
my $totalBoard = 0;
my $totalTopic = 0;
my $totalPost = 0;
print
"<HTML>\n",
"<HEAD>\n",
"<TITLE>Importing database from vBulletin to LB5000</TITLE>\n",
"<meta HTTP-EQUIV=Content-Type content=\"text/html; charset=gb2312\">\n",
"<STYLE TYPE='text/css'>\n",
"pre { font-family: verdana; font-size: 10pt; color: #FFFFFF}\n",
"</style>\n",
"</head>\n",
"<body bgcolor=#000000>\n",
"<pre>\n\n",
"Importing Database ($startTime)\n",
"-----------------------------------------------------------\n\n";
print "Importing member ... \n";
my $query = "SELECT * FROM $vbName.user";
my $sth=$dbh->prepare("$query") or die $!;
my $vbMem = $sth->fetchall_arrayref({});
$sth->finish();
# Import members
for my $member (@$vbMem) {
my $userId = $member->{'userid'};
my $admin = ($member->{'usergroupid'} == 6) ? 1 : 0;
my $userName = quote($member->{'username'});
my $homepage = ($member->{'homepage'} eq "http://") ? "" : $member->{'homepage'};
my $icq = ($member->{'icq'} =~ /\d+/) ? $member->{'icq'} : 0;
my $hideEmail = $member->{'showemail'} ? "no" : "yes";
my $notify = $member->{'emailnotification'} ? 1 : 0;
my $tempLogin = $member->{'cookieuser'} ? 0 : 1;
my $regTime = $member->{'joindate'};
my $lastOnTime = $member->{'lastvisit'};
my $lastReadTime = $member->{'lastactivity'};
my $postNum = $member->{'posts'};
my $hidden = $member->{'invisible'} ? 1 : 0;
my @xxx = split(/\n/, $member->{'biography'});
my $location = "";
my $occupation = "";
my $hobbies = "";
foreach my $x (@xxx) {
if ($x =~ /(^Occupation: )(.+)/) {
$occupation = $2;
}
elsif ($x =~ /(^Location: )(.+)/) {
$location = $2;
}
elsif ($x =~ /(^Interests: )(.+)/) {
$hobbies = $2;
}
}
$location = quote($location);
$occupation = quote($occupation);
$hobbies = quote($hobbies);
my $signature = $member->{'signature'};
$signature =~ s!\r!!g;
$signature =~ s!\n{3,}!\n\n!g;
$signature =~ s!^\n+!!g;
$signature =~ s!\n+$!!g;
$signature =~ s!\n! <br> !g;
$signature = quote($signature);
my $realname = $userName;
$userName =~ s/ /_/gi;
$userName =~ tr/A-Z/a-z/;
$userName =~ s/[\a\f\n\e\0\r\t\`\~\!\@\#\$\%\^\&\*\(\)\=\+\\\[\]\{\}\;\'\:\"\,\.\/\<\>\?]//isg;
my $filetocheck = "$lb5000member" . "$userName$ending";
if (-e $filetocheck) { print "用户 $realname 已经存在,不能转换!"; next; }
open(IBMEMBER,">$lb5000member$userName$ending") || die ("打开 LB5000 的用户数据存放目录错误,请检查路径!");
print IBMEMBER "$realname\t$member->{'password'}\tMember\tme\t$postNum\t$member->{'email'}\t$hideEmail\txxx.xxx.xxx.xxx\t$homepage\t\t$icq\t$location\t\t980364618\tNot Posted\t$signature\t\t\t\t\t\t\t\n";
close(IBMEMBER);
print "用户 $realname 已经成功转换成 LB5000 II 用户了!<BR><BR>";
$totalMember++;
}
print "done!\n\n";
print
"\n\n--------------------------------------------------\n",
"Member: $totalMember\n",
"--------------------------------------------------\n",
"</pre>\n",
"</body>\n",
"</html>\n";
# That's all
$dbh->disconnect() or dbError();
exit;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -