⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 register.cgi

📁 绿叶网络小学校园网-完全适合小学的网站
💻 CGI
📖 第 1 页 / 共 2 页
字号:
#!/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>
	            &nbsp;&nbsp;<img src="$imagesurl/images/closedfold.gif" border=0>&nbsp;&nbsp;<a href="$forumsummaryprog">$boardname</a>
	            <br>
                &nbsp;&nbsp;<img src="$imagesurl/images/bar.gif" border=0><img src="$imagesurl/images/openfold.gif" border=0>&nbsp;&nbsp;用户注册
            </td>
            </tr>
            <tr>
        <td valign=bottom align=right>&nbsp; $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\&nbsp;\n/isg;
        $signature =~ s/\n/\[br\]/isg;
        $signature =~ s/\[br\]\[br\]/\[br\]\&nbsp;\[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/\&nbsp\;//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 + -