📄 register.cgi
字号:
#!/usr/bin/perl
#############################################################
# Ikonboard v2.1
# Copyright 2000 Ikondiscussion.com - All Rights Reserved
# Ikondiscussion is a trademark of Ikondiscussion.com
#
# Software Distributed by: Ikondiscussion.com
# Visit us online at http://www.ikondiscussion.com
# Email us on boards@ikondiscussion.com
#
# All files written by Matthew Mecham
#############################################################
#use CGI::Carp "fatalsToBrowser"; # Output errors to browser
use CGI qw(:standard); # Saves loads of work
$CGI::POST_MAX=1024 * 150; # limit post data
$CGI::DISABLE_UPLOADS = 1; # Disable uploads
$CGI::HEADERS_ONCE = 1; # Make sure we only have 1 header
eval {
($0 =~ m,(.*)/[^/]+,) and unshift (@INC, "$1");
($0 =~ m,(.*)\\[^\\]+,) and unshift (@INC, "$1");
require "ikon.lib"; # Require ikonboard ()
require "data/progs.cgi"; # Require prog names
require "data/boardinfo.cgi";# Require board info
require "data/styles.cgi"; # Require styles info
require "ikonmail.lib"; # Require styles info
};
if ($@) {
print header(-charset=>"gb2312"); print start_html(-title=>"ib2000 出错!");
print "不能够找到文件:$@\n如果您使用的是 Windows 类操作系统,请在每一个程序中更改 require 的设置,填入绝对路径!";
print end_html; exit;
}
$|++; # Unbuffer the output
#################--- Begin the program ---###################
$thisprog = "register.cgi";
$query = new CGI;
&checkVALIDITY;
$boardurltemp =$boardurl;
$boardurltemp =~ s/http\:\/\/(\S+?)\/(.*)/\/$2/;
$cookiepath = $boardurltemp;
$cookiepath =~ s/$thisprog//sg;
for ('inmembername','password','password2','emailaddress','showemail','homepage','aolname','icqnumber','location',
'interests','signature','timedifference','useravatar','action','personalavatar','personalwidth','personalheight') {
next unless defined $_;
next if $_ eq 'SEND_MAIL';
$tp = $query->param($_);
$tp = &unHTML("$tp");
${$_} = $tp;
}
$helpurl = &helpfiles("用户注册");
$helpurl = qq~$helpurl<img src="$imagesurl/images/help_b.gif" border=0></a>~;
if ($arrawsignpic eq "on") { $signpicstates = "允许";} else {$signpicstates = "禁止";}
if ($arrawsignfontsize eq "on") { $signfontsizestates = "允许";} else {$signfontsizestates = "禁止";}
if ($arrawsignsound eq "on") { $signsoundstates = "允许";} else {$signsoundstates = "禁止";}
&title;
$output .= qq~
<p>
<table cellpadding=0 cellspacing=0 border=0 width=$tablewidth align=center>
<tr>
<td width=30% rowspan=2 valign=top>
<img src="$imagesurl/images/$boardlogo" border=0>
</td>
<td valign=top align=left>
<font face="$font" color=$fontcolormisc>
<img src="$imagesurl/images/closedfold.gif" border=0> <a href="$forumsummaryprog">$boardname</a>
<br>
<img src="$imagesurl/images/bar.gif" border=0><img src="$imagesurl/images/openfold.gif" border=0> 用户注册
</td>
</tr>
<tr>
<td valign=bottom align=right> $helpurl</td>
</tr>
</table>
<p>
<table cellpadding=0 cellspacing=0 border=0 width=$tablewidth bgcolor=$tablebordercolor align=center>
<tr><td>
<table cellpadding=6 cellspacing=1 border=0 width=100%>
~;
if ($action eq "addmember") { #start add member
$membercode = "me";
$membertitle = "Member";
$numberofposts = "0";
$joineddate = time;
$lastpostdate = "没有发表过";
$ipaddress = $ENV{'REMOTE_ADDR'};
# check against the ban lists
$filetoopen = "$ikondir" . "data/banlist.cgi";
open(FILE,"$filetoopen");
@bannedmembers = <FILE>;
close(FILE);
foreach (@bannedmembers) {
($bannedname, $bannedemail, $bannedip) = split(/\|/,$_);
chomp $bannedname;
chomp $bannedemail;
chomp $bannedip;
if ($emailaddress =~ /^$bannedemail/) { $bannedmember = "yes"; }
if ($inmembername eq "$bannedname") { $bannedmember = "yes"; }
if ($ipaddress =~ /^$bannedip/) { $bannedmember = "yes"; }
}
if ($bannedmember eq "yes") {
print header(-charset=>"gb2312"); &error("用户注册&对不起,你不允许注册,请联系论坛管理员以便解决!");
}
if (($passwordverification eq "yes") && ($emailfunctions ne "off")) {
$seed = int(rand 100000);
$password = crypt($seed, aun);
$password =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$password =~ s/\.//g;
$password =~ s/\|//g;
$password = substr($password, 0, 7);
}
if ($interests) {
$interests =~ s/\t//g;
$interests =~ s/\r//g;
$interests =~ s/ / /g;
$interests =~ s/\n\n/\<p\>/g;
$interests =~ s/\n/\<br\>/g;
}
if ($signature) {
$signature =~ s/\t//g;
$signature =~ s/\r//g;
$signature =~ s/ / /g;
$signature =~ s/\n\n/\n\ \n/isg;
$signature =~ s/\n/\[br\]/isg;
$signature =~ s/\[br\]\[br\]/\[br\]\ \[br\]/isg;
}
### Throw an error if they have more than three sig lines.
@testsig = split(/\[br\]/,$signature);
$siglines = @testsig;
if ($siglines > 5) { print header(-charset=>"gb2312"); &error("用户注册&对不起,在您的签名中只允许有 5 行!"); }
if (($personalavatar)&&($personalwidth)&&($personalheight)) {
if ($personalavatar !~ /^http:\/\/[\w\W]+\.[\w\W]+$/) {
print header(-charset=>"gb2312"); &error("用户注册&自定义头像的 URL 地址有问题!");
}
if (($personalavatar !~ /\.gif$/isg)&&($personalavatar !~ /\.jpg$/isg)&&($personalavatar !~ /\.png$/isg)) {
print header(-charset=>"gb2312"); &error("用户注册&自定义头像必须为 PNG、GIF 或 JPG 格式") ;
}
if (($personalwidth < 20)||($personalwidth > $maxposticonwidth)) {
print header(-charset=>"gb2312"); &error("用户注册&对不起,自定义图像宽度必须在 20 -- $maxposticonwidth 像素之间!");
}
if (($personalheight < 20)||($personalheight > $maxposticonheight)) {
print header(-charset=>"gb2312"); &error("用户注册&对不起,自定义图像高度必须在 20 -- $maxposticonheight 像素之间!");
}
$useravatar = "noavatar";
}
else {$personalavatar=""; $personalwidth=""; $personalheight="";} #清除自定义头像信息
### make sure its a valid form
if($inmembername eq "") { $blankfields = "yes"; }
if($password eq "") { $blankfields = "yes"; }
if($emailaddress eq "") { $blankfields = "yes"; }
if ($blankfields) {
print header(-charset=>"gb2312"); &error("用户注册&请输入用户名、密码和邮件地址,这些是必需的!");
}
if($inmembername =~ /_/) { print header(-charset=>"gb2312"); &error("用户注册&请不要在用户名中使用下划线!"); }
$inmembername =~ s/\ \;//g;
$inmembername =~ s/ / /g;
$inmembername =~ s/[ ]+/ /g;
$inmembername =~ s/\s*$//g;
$inmembername =~ s/^\s*//g;
$inmembername =~ s/[ ]+/_/;
$inmembername =~ s/@/_/isg;
$inmembername =~ s/[\a\f\n\r\`\~\!\@\#\$\%\^\&\*\(\)\=\+\\\[\]\{\}\;\'\:\"\,\.\/\<\>\?]//isg;
if($inmembername =~ /^客人/) { print header(-charset=>"gb2312"); &error("用户注册&请不要在用户名中使用客人字样!"); }
if(length($inmembername)>12) { print header(-charset=>"gb2312"); &error("用户注册&用户名太长,请不要超过12个字符(6个汉字)!"); }
if(length($location)>14) { print header(-charset=>"gb2312"); &error("用户注册&来自地区过长,请不要超过14个字符(7个汉字)!"); }
$_ = $inmembername;
if ((m/_{2,}/)||(!$inmembername)) {
print header(-charset=>"gb2312"); &error("用户注册&用户名中含有非法字符!");
}
if ($passwordverification eq "no"){
if ($password ne $password2) {
print header(-charset=>"gb2312"); &error("用户注册&对不起,你输入的两次密码不相同!");
}
}
if($emailaddress !~ /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/) { print header(-charset=>"gb2312"); &error("用户注册&邮件地址错误!"); }
### check for an already in use member name
&getmember("$inmembername");
if ($userregistered ne "no") { $allowregister = "fail"; }
my ($tempinusername) = $inmembername;
chomp $tempinusername;
$filetocheck = "$ikondir" . "members/$tempinusername.cgi";
if (-e $filetocheck) { $allowregister = "fail"; }
$tempinusername =~ tr/a-z/A-Z/;
$filetocheck = "$ikondir" . "members/$tempinusername.cgi";
if (-e $filetocheck) { $allowregister = "fail"; }
$tempinusername =~ tr/A-Z/a-z/;
$filetocheck = "$ikondir" . "members/$tempinusername.cgi";
if (-e $filetocheck) { $allowregister = "fail"; }
if ($allowregister eq "fail") {
print header(-charset=>"gb2312"); &error("用户注册&该用户已经存在,请重新输入一个新的用户名!");
}
$memberfiletitle = $inmembername;
$memberfiletitle =~ y/ /_/;
$filetomake = "$ikondir" . "members/$memberfiletitle.cgi";
open(FILE, ">$filetomake");
flock(FILE, 2) if ($OS_USED eq "Unix");
print FILE "$inmembername|$password|$membertitle|$membercode|$numberofposts|$emailaddress|$showemail|$ipaddress|$homepage|$aolname|$icqnumber|$location|$interests|$joineddate|$lastpostdate|$signature|$timedifference|$privateforums|$useravatar|$misc1|$misc2|$misc3|$personalavatar|$personalwidth|$personalheight|";
close(FILE);
$inmembername =~ y/_/ /;
$output .= qq~
<tr>
<td bgcolor=$miscbacktwo valign=middle align=center><font face="$font" color=$fontcolormisc><b>感谢您注册,$inmembername</b></font></td></tr>
<tr>
<td bgcolor=$miscbackone valign=middle><font face="$font" color=$fontcolormisc>
具体情况:
<ul>
<li><a href="$forumsummaryprog">返回论坛首页</a>
</ul>
</tr>
</td>
</table></td></tr></table>
~;
if (($passwordverification eq "yes") && ($emailfunctions ne "off")) {
$output =~ s/具体情况:/您的密码已经寄出!/;
}
### Set the cookies
$namecookie = cookie(-name => "amembernamecookie",
-value => "$inmembername",
-path => "$cookiepath",
-expires => "+30d");
$passcookie = cookie(-name => "apasswordcookie",
-value => "$inpassword",
-path => "$cookiepath",
-expires => "+30d");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -