| ############################################################################### |
| ############################################################################### |
| # Register.pl # |
| # Register.pm # |
| |
| # $Date: 01.05.16 $ # |
| ############################################################################### |
| ############################################################################### |
| # YaBB: Yet another Bulletin Board # |
| # YaBB: Yet another Bulletin Board # |
| # Open-Source Community Software for Webmasters # |
| # Open-Source Community Software for Webmasters # |
| # Version: YaBB 2.5.2 # |
| # Version: YaBB 2.6.12 # |
| # Packaged: October 21, 2012 # |
| # Packaged: January 5, 2016 # |
| # Distributed by: http://www.yabbforum.com # |
| # Distributed by: http://www.yabbforum.com # |
| # =========================================================================== # |
| # =========================================================================== # |
| # Copyright (c) 2000-2012 YaBB (www.yabbforum.com) - All Rights Reserved. # |
| # Copyright (c) 2000-2016 YaBB (www.yabbforum.com) - All Rights Reserved. # |
| # Software by: The YaBB Development Team # |
| # Software by: The YaBB Development Team # |
| # with assistance from the YaBB community. # |
| # with assistance from the YaBB community. # |
| ############################################################################### |
| ############################################################################### |
| |
| # use strict; |
| |
| # use warnings; |
| |
| no warnings qw(uninitialized once redefine); |
| |
| use CGI::Carp qw(fatalsToBrowser); |
| |
| use English '-no_match_vars'; |
| |
| our $VERSION = '2.6.12'; |
| |
| |
| |
| $registerpmver = 'YaBB 2.6.12 $Revision: 1651 $'; |
| |
| if ( $action eq 'detailedversion' ) { return 1; } |
| |
| |
| |
| if ( !$iamguest |
| |
| && ( !$admin && $action ne 'activate' && $action ne 'admin_descision' ) ) |
| |
| { |
| |
| fatal_error('no_registration_logged_in'); |
| |
| } |
| |
| |
| |
| require Sources::Mailer; |
| |
| LoadLanguage('Register'); |
| |
| LoadCensorList(); |
| |
| |
| $registerplver = 'YaBB 2.5.2 $Revision: 1.6 $'; |
| get_template('Register'); |
| if ($action eq 'detailedversion') { return 1; } |
| |
| if (!$iamguest && (!$admin && $action ne 'activate' && $action ne 'admin_descision') ) { &fatal_error("no_registration_logged_in"); } |
| if ( $OSNAME =~ /Win/sm ) { |
| |
| my $regstyle = q~ style="text-transform: lowercase"~; |
| require "$sourcedir/Mailer.pl"; |
| } |
| &LoadLanguage('Register'); |
| else { |
| &LoadCensorList; |
| my $regstyle = q{}; |
| |
| |
| if ($^O =~ /Win/) { |
| |
| my $regstyle = qq~ style="text-transform: lowercase"~; |
| |
| } else { |
| |
| my $regstyle = ''; |
| |
| } |
| } |
| |
| |
| sub Register { |
| sub Register { |
| if ($regtype == 0 && $iamguest) { &fatal_error("registration_disabled"); } |
| if ( $regtype == 0 && $iamguest ) { fatal_error('registration_disabled'); } |
| my ($tmpregname, $tmprealname, $tmpregemail, $tmpregpasswrd1, $tmpregpasswrd2, $hidechecked, @birthdate); |
| if ( $RegAgree == 1 && $FORM{'regnoagree'} ) { |
| $yytitle = $register_txt{'97'}; |
| $yySetLocation = qq~$scripturl~; |
| $yynavigation = qq~› $register_txt{'97'}~; |
| redirectexit(); |
| if ($FORM{'reglanguage'}) { |
| } |
| $language = $FORM{'reglanguage'}; |
| if ( $RegAgree == 1 && !$FORM{'regagree'} ) { |
| &LoadLanguage('Register'); |
| $yytitle = qq~$register_txt{'97'}~; |
| } |
| $yynavigation = qq~› $register_txt{'97'}~; |
| if ($FORM{'regusername'}) { $tmpregname = $FORM{'regusername'}; } |
| if ($language) { |
| if ($FORM{'regrealname'}) { $tmprealname = $FORM{'regrealname'}; } |
| fopen( AGREE, "$langdir/$language/agreement.txt" ); |
| if ($FORM{'email'}) { $tmpregemail = $FORM{'email'}; } |
| } |
| if ($FORM{'hideemail'} || !exists $FORM{'hideemail'}) { $hidechecked = qq~ checked="checked"~; } |
| else { |
| if ($FORM{'add_field0'}) { $newfield = $FORM{'add_field0'}; } |
| fopen( AGREE, "$langdir/$lang/agreement.txt" ); |
| if ($FORM{'passwrd1'}) { $tmpregpasswrd1 = $FORM{'passwrd1'}; } |
| } |
| if ($FORM{'passwrd2'}) { $tmpregpasswrd2 = $FORM{'passwrd2'}; } |
| @agreement = <AGREE>; |
| if ($FORM{'reason'}) { $reason = $FORM{'reason'}; } |
| fclose(AGREE); |
| if ($FORM{'birth_day'}) { $birthdate[0] = $FORM{'birth_day'}; } |
| $fullagree = join q{}, @agreement; |
| if ($FORM{'birth_month'}) { $birthdate[1] = $FORM{'birth_month'}; } |
| $fullagree =~ s/\n/<br \/>/gsm; |
| if ($FORM{'birth_year'}) { $birthdate[2] = $FORM{'birth_year'}; } |
| $yymain .= $myregister_fullagree; |
| |
| $yymain =~ s/{yabb fullagree}/$fullagree/sm; |
| ## moved langopt setup to subs.pl |
| template(); |
| if (!$langopt) { &guestLangSel; } |
| exit; |
| |
| } |
| if (-e "$vardir/email_domain_filter.txt" ) { require "$vardir/email_domain_filter.txt"; } |
| my ( |
| if ($adomains) { |
| $tmpregname, $tmprealname, $tmpregemail, $tmpregpasswrd1, |
| @domains = split (/\,/, $adomains); |
| $tmpregpasswrd2, $hidechecked, $reg_start_time, @birthdate |
| $aedomains = qq~<table border="0" width="100%" cellspacing="0" cellpadding="0"><tr><td><input type="text" maxlength="100" name="email" id="email" value="$tmpregemail" size="15" /></td><td><select name="domain" id="domain">~; |
| ); |
| foreach (@domains) { $aedomains .= ($_ =~ m/\@/) ? qq~<option value="$_">$_</option>~ : qq~<option value="\@$_">@$_</option>~; } |
| $yytitle = $register_txt{'97'}; |
| $aedomains .= qq~</select></td></tr></table>~; |
| $yynavigation = qq~› $register_txt{'97'}~; |
| |
| if ( $FORM{'reglanguage'} ) { |
| } else { |
| $language = $FORM{'reglanguage'}; |
| $aedomains .= qq~<input type="text" maxlength="100" onchange="checkAvail('$scripturl',this.value,'email')" name="email" id="email" value="$tmpregemail" size="45" />~; |
| LoadLanguage('Register'); |
| } |
| } |
| |
| if ( $FORM{'regusername'} ) { $tmpregname = $FORM{'regusername'}; } |
| $yymain .= qq~ |
| if ( $FORM{'regrealname'} ) { $tmprealname = $FORM{'regrealname'}; } |
| <script language="JavaScript1.2" type="text/javascript" src="$yyhtml_root/ajax.js"></script> |
| if ( $FORM{'email'} ) { $tmpregemail = $FORM{'email'}; } |
| <form action="$scripturl?action=register2" method="post" name="creator" onsubmit="return CheckRegFields();"> |
| if ( $FORM{'hideemail'} || !exists $FORM{'hideemail'} ) { |
| <table border="0" width="100%" cellpadding="4" cellspacing="1" class="bordercolor"> |
| $hidechecked = q~ checked="checked"~; |
| <colgroup> |
| } |
| <col width="45%" /> |
| if ( $FORM{'add_field0'} ) { $newfield = $FORM{'add_field0'}; } |
| <col width="55%" /> |
| if ( $FORM{'passwrd1'} ) { $tmpregpasswrd1 = $FORM{'passwrd1'}; } |
| </colgroup> |
| if ( $FORM{'passwrd2'} ) { $tmpregpasswrd2 = $FORM{'passwrd2'}; } |
| <tr> |
| if ( $FORM{'reason'} ) { $reason = $FORM{'reason'}; } |
| <td colspan="2" class="titlebg"> |
| if ( $FORM{'birth_day'} ) { $birthdate[0] = $FORM{'birth_day'}; } |
| <img src="$imagesdir/register.gif" alt="$register_txt{'97'}" title="$register_txt{'97'}" border="0" /> |
| if ( $FORM{'birth_month'} ) { $birthdate[1] = $FORM{'birth_month'}; } |
| <span class="text1"><b>$register_txt{'97'}</b> $register_txt{'517'}</span> |
| if ( $FORM{'birth_year'} ) { $birthdate[2] = $FORM{'birth_year'}; } |
| </td> |
| |
| </tr> |
| $min_reg_time ||= 0; |
| <tr> |
| if ( $min_reg_time > 0 ) { |
| <td class="windowbg" colspan="2" align="center"> |
| $reg_start_time = |
| $register_txt{'97a'} |
| qq~<input type="hidden" name="reg_start_time" value="$date" />~; |
| </td> |
| } |
| </tr>~; |
| |
| |
| if ( !$langopt ) { guestLangSel(); } |
| if ($morelang > 1) { |
| |
| $yymain .= qq~ |
| if ( -e "$vardir/email_domain_filter.txt" ) { |
| <tr> |
| require "$vardir/email_domain_filter.txt"; |
| <td class="windowbg" align="right" valign="top"> |
| } |
| <label for="reglanguage"><b>$register_txt{'101'}</b></label> |
| if ($adomains) { |
| </td> |
| @domains = split /\,/xsm, $adomains; |
| <td class="windowbg2" align="left" valign="top"> |
| $aedomains = $myaedomains_a; |
| <select name="reglanguage" id="reglanguage" onchange="document.creator.action='$scripturl?action=register'; document.creator.submit();"> |
| $aedomains =~ s/{yabb tmpregemail}/$tmpregemail/sm; |
| $langopt |
| foreach (@domains) { |
| </select> |
| $aedomains .= |
| <noscript><input type="submit" value="$maintxt{'32'}" class="button" /></noscript> |
| ( $_ =~ m/\@/xsm ) |
| </td> |
| ? qq~<option value="$_">$_</option>~ |
| </tr>~; |
| : qq~<option value="\@$_">@$_</option>~; |
| } |
| } |
| $newfield = q{}; |
| $aedomains .= $myaedomains_b; |
| $yymain .= qq~ |
| } |
| <!--user name section--> |
| else { |
| <tr> |
| $aedomains .= |
| <td class="windowbg" align="right" valign="top"> |
| qq~<input type="text" maxlength="100" onchange="checkAvail('$scripturl',this.value,'email')" name="email" id="email" value="$tmpregemail" size="45" />~; |
| <label for="regusername"><b>$register_txt{'98'}:</b><br /> |
| } |
| <span class="small">$register_txt{'520'}$register_txt{'241ea'}</span></label> |
| |
| </td> |
| $yymain .= qq~ |
| <td class="windowbg2" align="left" valign="top"> |
| <script type="text/javascript" src="$yyhtml_root/ajax.js"></script> |
| <input autocomplete="off" type="text" name="regusername" id="regusername" onchange="checkAvail('$scripturl',this.value,'user')" size="30" value="$tmpregname" maxlength="18"$regstyle /> * |
| <form action="$scripturl?action=register2" method="post" name="creator" onsubmit="return CheckRegFields();" accept-charset="$yymycharset"> |
| <div id="useravailability"></div> |
| $reg_start_time~; |
| <input type="hidden" name="language" id="language" value="$language" /> |
| if ( $RegAgree == 1 && $FORM{'regagree'} ) { |
| </td> |
| $yymain .= q~ |
| </tr> |
| <input type="hidden" name="regagree" value="yes" />~; |
| <tr> |
| } |
| <td class="windowbg" align="right" valign="top"> |
| $yymain .= $myregister_regfill_a; |
| <label for="regrealname"><b>$register_txt{'98a'}:</b>~; |
| |
| if ($name_cannot_be_userid) { |
| if ( $morelang > 1 ) { |
| $yymain .= qq~ |
| $yymain .= $myregister_morelang; |
| <br /><span class="small">$register_txt{'521'}</span>~; |
| $yymain =~ s/{yabb langopt}/$langopt/sm; |
| } |
| } |
| $yymain .= qq~</label> |
| $newfield = q{}; |
| </td> |
| ## user name section |
| <td class="windowbg2" align="left" valign="top"> |
| $yymain .= $myregister_regfill_b; |
| <input type="text" name="regrealname" id="regrealname" onchange="checkAvail('$scripturl',this.value,'display')" size="30" value="$tmprealname" maxlength="30" /> * |
| $yymain =~ s/{yabb tmpregname}/$tmpregname/sm; |
| <div id="displayavailability"></div> |
| $yymain =~ s/{yabb regstyle}/$regstyle/sm; |
| </td> |
| $yymain =~ s/{yabb language}/$language/sm; |
| </tr> |
| |
| <tr> |
| if ($name_cannot_be_userid) { |
| <td class="windowbg" align="right" valign="top"><label for="email"><b>$register_txt{'69'}:</b> |
| $yymain .= qq~ |
| <br /><span class="small">$register_txt{'679'}</span></label> |
| <br /><span class="small">$register_txt{'521'}</span>~; |
| </td> |
| } |
| <td class="windowbg2" align="left" valign="top"> |
| |
| $aedomains * |
| $email2 = q{}; |
| <div id="emailavailability"></div> |
| if ( $imp_email_check == 1 ) { |
| ~; |
| eval { |
| if ($allow_hide_email == 1) { |
| require Net::DNS; |
| $yymain .= qq~ |
| }; |
| <br /><input type="checkbox" name="hideemail" id="hideemail" value="1"$hidechecked /> <label for="hideemail">$register_txt{'721'}</label> |
| if (!$EVAL_ERROR ) { |
| ~; |
| $email2 = $myregister_email2; |
| } |
| $email2 =~ s/{yabb email2}/$register_txt{'70'}/sm; |
| $yymain .= qq~ |
| } |
| </td> |
| } |
| </tr> |
| |
| ~; |
| $yymain .= $myregister_avail; |
| |
| $yymain =~ s/{yabb tmprealname}/$tmprealname/sm; |
| if ($birthday_on_reg) { |
| $yymain =~ s/{yabb aedomains}/$aedomains/sm; |
| &timetostring($date); |
| |
| if ($timeselected =~ /[145]/) { |
| if ( $allow_hide_email == 1 ) { |
| $yymain .= qq~ |
| $yymain .= qq~ |
| <tr> |
| <br /><input type="checkbox" name="hideemail" id="hideemail" value="1"$hidechecked /> <label for="hideemail">$register_txt{'721'}</label> |
| <td class="windowbg" align="right" valign="top"> |
| ~; |
| <label for="birth_month"><b>$register_txt{'birthday'}:</b></label> |
| } |
| </td> |
| $yymain .= $myregister_endrow; |
| <td class="windowbg2" align="left" valign="top"><input type="text" name="birth_month" id="birth_month" size="2" value="$birthdate[1]" maxlength="2" onkeypress="jumpatnext('document.creator.birth_month','document.creator.birth_day',2)" /> <input type="text" name="birth_day" id="birth_day" size="2" value="$birthdate[0]" maxlength="2" onkeypress="jumpatnext('document.creator.birth_day','document.creator.birth_year',2)" /> <input type="text" name="birth_year" id="birth_year" size="4" value="$birthdate[2]" maxlength="4" />~ . ($birthday_on_reg == 2 ? ' *' : '') . qq~ <span class="small">$register_txt{'birthday_a'}</span>~; |
| $yymain .= $email2; |
| |
| |
| } else { |
| if ($birthday_on_reg) { |
| $yymain .= qq~ |
| my $editAgeTxt; |
| <tr> |
| if ( $editAgeLimit == 1 ) { |
| <td class="windowbg" align="right" valign="top"> |
| $editAgeTxt = |
| <label for="birth_day"><b>$register_txt{'birthday'}:</b></label> |
| qq~<br /><span class="small">$register_txt{'birthday_c'}</span>~; |
| </td> |
| } |
| <td class="windowbg2" align="left" valign="top"><input type="text" name="birth_day" id="birth_day" size="2" value="$birthdate[0]" maxlength="2" onkeypress="jumpatnext('document.creator.birth_day','document.creator.birth_month',2)" /> <input type="text" name="birth_month" id="birth_month" size="2" value="$birthdate[1]" maxlength="2" onkeypress="jumpatnext('document.creator.birth_month','document.creator.birth_year',2)" /> <input type="text" name="birth_year" id="birth_year" size="4" value="$birthdate[2]" maxlength="4" />~ . ($birthday_on_reg == 2 ? ' *' : '') . qq~ <span class="small">$register_txt{'birthday_b'}</span>~; |
| timetostring($date); |
| } |
| if ( $timeselected =~ /[145]/xsm ) { |
| |
| $yymain .= |
| $yymain .= qq~ |
| $myregister_bdonreg |
| </td> |
| . ( $birthday_on_reg == 2 ? $myreg_req : q{} ) |
| </tr>~; |
| . qq~ <span class="small">$register_txt{'birthday_a'}</span>~; |
| } |
| } |
| |
| else { |
| if ($gender_on_reg) { |
| $yymain .= |
| if ($gender_on_reg == 1) { |
| $myregister_bdonreg_2 |
| $gender_req = qq~<label for="gender"><b>$register_txt{'gender'}: </b></label>~; |
| . ( $birthday_on_reg == 2 ? $myreg_req : q{} ) |
| } |
| . qq~ <span class="small">$register_txt{'birthday_b'}</span>~; |
| else { |
| } |
| $gender_req = qq~* <label for="gender"><b>$register_txt{'gender'}: </b></label>~; |
| $yymain =~ s/{yabb editAgeTxt}/$editAgeTxt/sm; |
| } |
| $yymain =~ s/{yabb birthdate0}/$birthdate[0]/sm; |
| $yymain .= qq~ |
| $yymain =~ s/{yabb birthdate1}/$birthdate[1]/sm; |
| <tr> |
| $yymain =~ s/{yabb birthdate2}/$birthdate[2]/sm; |
| <td class="windowbg" align="right" valign="top"> |
| |
| $gender_req |
| $yymain .= $myregister_endrow; |
| </td> |
| } |
| <td class="windowbg2" align="left" valign="top"> |
| |
| <select name="gender" id="gender" size="1"> |
| if ( $gender_on_reg ) { |
| <option value=""></option> |
| my $editGenderTxt; |
| <option value="Male">$register_txt{'gender_male'}</option> |
| my $nongen_opt = q{}; |
| <option value="Female">$register_txt{'gender_female'}</option> |
| if ( $editGenderLimit == 1 ) { |
| </select> |
| $editGenderTxt = |
| </td> |
| qq~<br /><span class="small">$register_txt{'gender_edit'}</span>~; |
| </tr> |
| } |
| ~; |
| if ( $gender_on_reg == 2 ) { |
| } |
| $nongen_opt = $myreg_req; |
| unless ($emailpassword) { |
| } |
| $yymain .= qq~ |
| |
| <tr> |
| $yymain .= $myregister_gender; |
| <td class="windowbg" align="right" valign="top"> |
| $yymain =~ s/{yabb editGenderTxt}/$editGenderTxt/sm; |
| <label for="passwrd1"><b>$register_txt{'81'}:</b></label> |
| $yymain =~ s/{yabb nongen_opt}/$nongen_opt/sm; |
| </td> |
| } |
| <td class="windowbg2" align="left" valign="top"> |
| if ( !$emailpassword ) { |
| <script language="JavaScript1.2" type="text/javascript"> |
| $yymain .= password_check(); |
| <!-- |
| } |
| // Password_strength_meter start |
| |
| var verdects = new Array("$pwstrengthmeter_txt{'1'}","$pwstrengthmeter_txt{'2'}","$pwstrengthmeter_txt{'3'}","$pwstrengthmeter_txt{'4'}","$pwstrengthmeter_txt{'5'}","$pwstrengthmeter_txt{'6'}","$pwstrengthmeter_txt{'7'}","$pwstrengthmeter_txt{'8'}"); |
| if ( $addmemgroup_enabled == 1 || $addmemgroup_enabled == 3 ) { |
| var colors = new Array("#8F8F8F","#BF0000","#FF0000","#00A0FF","#33EE00","#339900"); |
| my ( $addmemgroup, $selsize ); |
| var scores = new Array($pwstrengthmeter_scores); |
| foreach (@nopostorder) { |
| var common = new Array($pwstrengthmeter_common); |
| my ( |
| var minchar = $pwstrengthmeter_minchar; |
| $title, undef, undef, undef, undef, undef, |
| |
| undef, undef, undef, undef, $additional |
| function runPassword(D) { |
| ) = split /\|/xsm, $NoPost{$_}; |
| var nPerc = checkPassword(D); |
| if ($additional) { |
| if (nPerc > -199 && nPerc < 0) { |
| $addmemgroup .= qq~<option value="$_">$title</option>~; |
| strColor = colors[0]; |
| $selsize++; |
| strText = verdects[1]; |
| } |
| strWidth = "5%"; |
| } |
| } else if (nPerc == -200) { |
| $selsize = $selsize > 6 ? 6 : $selsize; |
| strColor = colors[1]; |
| my $additional_explain = |
| strText = verdects[0]; |
| $addmemgroup_enabled == 1 |
| strWidth = "0%"; |
| ? $register_txt{'766'} |
| } else if (scores[0] == -1 && scores[1] == -1 && scores[2] == -1 && scores[3] == -1) { |
| : $register_txt{'767'}; |
| strColor = colors[4]; |
| if ( $selsize > 1 ) { $additional_explain .= $register_txt{'767a'}; } |
| strText = verdects[7]; |
| |
| strWidth = "100%"; |
| if ($addmemgroup) { |
| } else if (nPerc <= scores[0]) { |
| $yymain .= $myregister_addmem; |
| strColor = colors[1]; |
| $yymain =~ s/{yabb additional_explain}/$additional_explain/sm; |
| strText = verdects[2]; |
| $yymain =~ s/{yabb selsize}/$selsize/sm; |
| strWidth = "10%"; |
| $yymain =~ s/{yabb addmemgroup}/$addmemgroup/sm; |
| } else if (nPerc > scores[0] && nPerc <= scores[1]) { |
| } |
| strColor = colors[2]; |
| } |
| strText = verdects[3]; |
| |
| strWidth = "25%"; |
| if ( $regtype == 1 ) { |
| } else if (nPerc > scores[1] && nPerc <= scores[2]) { |
| $yymain .= |
| strColor = colors[3]; |
| $myregister_regreason_a |
| strText = verdects[4]; |
| . qq~ <textarea cols="60" rows="7" name="reason" id="reason">$reason</textarea>~ |
| strWidth = "50%"; |
| . $myregister_regreason_c |
| } else if (nPerc > scores[2] && nPerc <= scores[3]) { |
| . length($RegReasonSymbols) |
| strColor = colors[4]; |
| . $myregister_regreason_b; |
| strText = verdects[5]; |
| $yymain =~ s/{yabb reason}/$reason/sm; |
| strWidth = "75%"; |
| $yymain =~ s/{yabb RegReasonSymbols}/$RegReasonSymbols/gsm; |
| } else { |
| } |
| strColor = colors[5]; |
| |
| strText = verdects[6]; |
| if ($extendedprofiles) { |
| strWidth = "100%"; |
| require Sources::ExtendedProfiles; |
| } |
| my $reg_ext_prof = ext_register(); |
| document.getElementById("passwrd1_bar").style.width = strWidth; |
| $yymain .= $reg_ext_prof; |
| document.getElementById("passwrd1_bar").style.backgroundColor = strColor; |
| } |
| document.getElementById("passwrd1_text").style.color = strColor; |
| |
| document.getElementById("passwrd1_text").childNodes[0].nodeValue = strText; |
| if ($regcheck) { |
| } |
| require Sources::Decoder; |
| |
| validation_code(); |
| function checkPassword(C) { |
| $yymain .= $myregister_regcheck; |
| if (C.length == 0 || C.length < minchar) return -100; |
| $yymain =~ s/{yabb flood_text}/$flood_text/sm; |
| |
| $yymain =~ s/{yabb showcheck}/$showcheck/sm; |
| for (var D = 0; D < common.length; D++) { |
| } |
| if (C.toLowerCase() == common[D]) return -200; |
| if ( $en_spam_questions && -e "$langdir/$language/spam.questions" ) { |
| } |
| SpamQuestion(); |
| |
| my $verification_question_desc; |
| var F = 0; |
| if ($spam_questions_case) { |
| if (C.length >= minchar && C.length <= (minchar+2)) { |
| $verification_question_desc = |
| F = (F + 6) |
| qq~<br />$register_txt{'verification_question_case'}~; |
| } else if (C.length >= (minchar + 3) && C.length <= (minchar + 4)) { |
| } |
| F = (F + 12) |
| $yymain .= $myregister_spamquest; |
| } else if (C.length >= (minchar + 5)) { |
| |
| F = (F + 18) |
| $yymain =~ s/{yabb spam_question}/$spam_question/sm; |
| } |
| $yymain =~ |
| |
| s/{yabb verification_question_desc}/$verification_question_desc/sm; |
| if (C.match(/[a-z]/)) { |
| $yymain =~ s/{yabb spam_question_id}/$spam_question_id/sm; |
| F = (F + 1) |
| $yymain =~ s/{yabb spam_question_image}/$spam_image/sm; |
| } |
| } |
| if (C.match(/[A-Z]/)) { |
| if ( $honeypot == 1 ) { |
| F = (F + 5) |
| fopen( HONEY, "<$langdir/$language/honey.txt" ) |
| } |
| or fatal_error( 'cannot_open', "$langdir/$language/honey.txt", 1 ); |
| if (C.match(/d+/)) { |
| @honey = <HONEY>; |
| F = (F + 5) |
| fclose(HONEY); |
| } |
| chomp @honey; |
| if (C.match(/(.*[0-9].*[0-9].*[0-9])/)) { |
| $hony = int rand $#honey; |
| F = (F + 7) |
| $newfieldb = $honey[$hony]; |
| } |
| |
| if (C.match(/.[!,\@,#,\$,\%,^,&,*,?,_,\~]/)) { |
| $yymain .= $myregister_honey; |
| F = (F + 5) |
| $yymain =~ s/{yabb newfieldb}/$newfieldb/sm; |
| } |
| $yymain =~ s/{yabb newfield}/$newfield/sm; |
| if (C.match(/(.*[!,\@,#,\$,\%,^,&,*,?,_,\~].*[!,\@,#,\$,\%,^,&,*,?,_,\~])/)) { |
| } |
| F = (F + 7) |
| |
| } |
| # SpamFruits courtesy of Carsten Dalgaard # |
| if (C.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/)){ |
| if ( $spamfruits == 1 ) { |
| F = (F + 2) |
| my @fruits = |
| } |
| ( $fruittxt{'2'}, $fruittxt{'3'}, $fruittxt{'4'}, $fruittxt{'5'} ); |
| if (C.match(/([a-zA-Z])/) && C.match(/([0-9])/)) { |
| my $rdn = int rand 4; |
| F = (F + 3) |
| $fruit = $fruits[$rdn]; |
| } |
| $yymain .= $myregister_fruits; |
| if (C.match(/([a-zA-Z0-9].*[!,\@,#,\$,\%,^,&,*,?,_,\~])|([!,\@,#,\$,\%,^,&,*,?,_,\~].*[a-zA-Z0-9])/)) { |
| $yymain =~ s/{yabb fruit}/$fruit/gsm; |
| F = (F + 3) |
| |
| } |
| |
| return F; |
| |
| } |
| |
| // Password_strength_meter end |
| |
| // --> |
| |
| </script> |
| |
| <div style="float:left;"><input type="password" maxlength="30" name="passwrd1" id="passwrd1" value="$tmpregpasswrd1" size="30" onkeypress="capsLock(event,'cappasswrd1')" onkeyup="runPassword(this.value);" /> * </div> |
| |
| <div style="float:left; width: 150px; height: 20px; text-align:left;"> |
| |
| <div id="password-strength-meter" style="background: transparent url($imagesdir/empty_bar.gif) repeat-x center left; height: 4px"></div> |
| |
| <div class="pstrength-bar" id="passwrd1_bar" style="border: 1px solid #FFFFFF; height: 4px"></div> |
| |
| <div class="pstrength-info" id="passwrd1_text"> </div> |
| |
| </div> |
| |
| <div style="clear:left; color: red; font-weight: bold; display: none" id="cappasswrd1">$register_txt{'capslock'}</div> |
| |
| <div style="clear:left; color: red; font-weight: bold; display: none" id="cappasswrd1_char">$register_txt{'wrong_char'}: <span id="cappasswrd1_character"> </span></div> |
| |
| </td> |
| |
| </tr> |
| |
| <tr> |
| |
| <td class="windowbg" align="right" valign="top"> |
| |
| <label for="passwrd2"><b>$register_txt{'82'}:</b></label> |
| |
| </td> |
| |
| <td class="windowbg2" align="left" valign="top"> |
| |
| <input type="password" maxlength="30" name="passwrd2" id="passwrd2" value="$tmpregpasswrd2" size="30" onkeypress="capsLock(event,'cappasswrd2')" /> * |
| |
| <div style="color: red; font-weight: bold; display: none" id="cappasswrd2">$register_txt{'capslock'}</div> |
| |
| <div style="color: red; font-weight: bold; display: none" id="cappasswrd2_char">$register_txt{'wrong_char'}: <span id="cappasswrd2_character"> </span></div> |
| |
| </td> |
| |
| </tr>~; |
| |
| } |
| |
| |
| |
| if ($addmemgroup_enabled == 1 || $addmemgroup_enabled == 3) { |
| |
| my ($title, $additional, $addmemgroup, $selsize); |
| |
| foreach (@nopostorder) { |
| |
| ($title, undef, undef, undef, undef, undef, undef, undef, undef, undef, $additional) = split(/\|/, $NoPost{$_}); |
| |
| if ($additional) { |
| |
| $addmemgroup .= qq~<option value="$_">$title</option>~; |
| |
| $selsize++; |
| |
| } |
| |
| } |
| |
| $selsize = $selsize > 6 ? 6 : $selsize; |
| |
| my $additional_explain = $addmemgroup_enabled == 1 ? $register_txt{'766'} : $register_txt{'767'}; |
| |
| $additional_explain .= $register_txt{'767a'} if $selsize > 1; |
| |
| |
| |
| $yymain .= qq~ |
| |
| <tr> |
| |
| <td class="windowbg" align="right" valign="top"> |
| |
| <label for="joinmemgroup"><b>$register_txt{'765'}:</b> |
| |
| <br /><span class="small">$additional_explain</span></label> |
| |
| </td> |
| |
| <td class="windowbg2" align="left" valign="top"> |
| |
| <select name="joinmemgroup" id="joinmemgroup" size="$selsize" multiple="multiple"> |
| |
| $addmemgroup |
| |
| </select> |
| |
| </td> |
| |
| </tr>~ if $addmemgroup; |
| |
| } |
| |
| |
| |
| if ($regtype == 1) { |
| |
| $yymain .= qq~ |
| |
| <tr> |
| |
| <td class="windowbg" align="right" valign="top"> |
| |
| <label for="reason"><b>$prereg_txt{'regreason'}:</b><br /> |
| |
| <span class="small">$prereg_txt{'reason_exp'}</span></label><br /><br /> |
| |
| </td> |
| |
| <td class="windowbg2" align="left" valign="top"> |
| |
| <textarea cols="60" rows="7" name="reason" id="reason">$reason</textarea> *<br /> |
| |
| <span class="small">$prereg_txt{'16'} <input value="$RegReasonSymbols" size="~ . length($RegReasonSymbols) . qq~" name="msgCL" class="windowbg" style="border: 0px; padding: 1px; font-size: 11px;" readonly="readonly" /></span> |
| |
| <script type="text/javascript" language="JavaScript"> |
| |
| <!-- |
| |
| var supportsKeys = false; |
| |
| function tick() { |
| |
| calcCharLeft(document.forms[0]); |
| |
| if (!supportsKeys) { timerID = setTimeout("tick()",$RegReasonSymbols); } |
| |
| } |
| |
| function calcCharLeft(sig) { |
| |
| clipped = false; |
| |
| maxLength = $RegReasonSymbols; |
| |
| if (document.creator.reason.value.length > maxLength) { |
| |
| document.creator.reason.value = document.creator.reason.value.substring(0,maxLength); |
| |
| charleft = 0; |
| |
| clipped = true; |
| |
| } else { |
| |
| charleft = maxLength - document.creator.reason.value.length; |
| |
| } |
| |
| document.creator.msgCL.value = charleft; |
| |
| return clipped; |
| |
| } |
| |
| tick(); |
| |
| //--> |
| |
| </script> |
| |
| </td> |
| |
| </tr>~; |
| |
| } |
| |
| |
| |
| if ($extendedprofiles) { |
| |
| require "$sourcedir/ExtendedProfiles.pl"; |
| |
| my $reg_ext_prof = &ext_register; |
| |
| $reg_ext_prof =~ s/align="left" valign="top"/align="right" valign="top"/g; |
| |
| $reg_ext_prof =~ s/<\/td><td align="left">/<\/td><td class="windowbg2" align="left">/g; |
| |
| $yymain .= $reg_ext_prof; |
| |
| } |
| |
| |
| |
| if ($regcheck) { |
| |
| require "$sourcedir/Decoder.pl"; |
| |
| &validation_code; |
| |
| |
| |
| $yymain .= qq~ |
| |
| <tr> |
| |
| <td class="windowbg" align="right" valign="top"> |
| |
| <label for="verification"><b>$floodtxt{'1'}:</b><br /> |
| |
| <span class="small">$floodtxt{'casewarning'}</span></label> |
| |
| </td> |
| |
| <td class="windowbg2" align="left" valign="middle"> |
| |
| $showcheck |
| |
| </td> |
| |
| </tr> |
| |
| <tr> |
| |
| <td class="windowbg" align="right" valign="top"> |
| |
| <label for="verification"><b>$floodtxt{'3'}:</b></label> |
| |
| </td> |
| |
| <td class="windowbg2" align="left" valign="top"> |
| |
| <input type="text" maxlength="30" name="verification" id="verification" size="30" /> * |
| |
| </td> |
| |
| </tr>~; |
| |
| } |
| |
| if ($en_spam_questions) { |
| |
| srand; |
| |
| fopen(SPAMQUESTIONS, "<$langdir/$language/spam.questions") || &fatal_error("cannot_open","$langdir/$language/spam.questions", 1); |
| |
| rand($.) < 1 && ($spam_question_rand = $_) while <SPAMQUESTIONS>; |
| |
| fclose(SPAMQUESTIONS); |
| |
| ($spam_question_id, $spam_question, undef) = split(/\|/, $spam_question_rand); |
| |
| if ($spam_questions_case) { $verification_question_desc = qq~<br />$register_txt{'verification_question_case'}~; } |
| |
| $yymain .= qq~ |
| $yymain .= qq~ |
| <tr> |
| <script type="text/javascript"> |
| <td class="windowbg" align="right" valign="top"> |
| function ShowFruits() { |
| <label for="verification_question"><b>$spam_question</b><br /> |
| var visfruits = "<html><head><link rel='stylesheet' href='$extpagstyle' type='text/css' /></head><body class='windowbg2'> "; |
| <span class="small">$register_txt{'verification_question_desc'}$verification_question_desc</span></label> |
| visfruits += "<img src='$defaultimagesdir/fruits.png' width='290' height='75' name='fruitsview' id='fruitsview' style='position: absolute; top: 0px; left: 0px; cursor: pointer;' alt='' onclick='FruitClick(event)' /> "; |
| </td> |
| visfruits += "<img src='$defaultimagesdir/fruitcheck.png' id='frmarker' style='z-index: 2; display: none;'> "; |
| <td class="windowbg2" align="left" valign="top"> |
| visfruits += "<script type='text/javascript'> " |
| <input type="text" name="verification_question" id="verification_question" size="30" /> * |
| visfruits += "var xcor = 0; " |
| <input type="hidden" name="verification_question_id" value="$spam_question_id" /> |
| visfruits += "var ycor = 0; " |
| </td> |
| visfruits += "var mrkpos = 30; " |
| </tr>~; |
| visfruits += "function FruitClick(event) \{ " |
| } |
| visfruits += "xcor = (event.clientX); " |
| if ($honeypot == 1) { |
| visfruits += "ycor = (event.clientY); " |
| fopen(HONEY, "<$langdir/$language/honey.txt") || &fatal_error("cannot_open","$langdir/$language/honey.txt", 1); |
| visfruits += "if(xcor > 0) mrkpos = 30; " |
| @honey = <HONEY>; |
| visfruits += "if(xcor > 75) mrkpos = 100; " |
| fclose(HONEY); |
| visfruits += "if(xcor > 145) mrkpos = 170; " |
| chomp @honey; |
| visfruits += "if(xcor > 215) mrkpos = 240; " |
| $hony = int rand $#honey; |
| visfruits += "document.getElementById('frmarker').style.display = 'block'; " |
| $newfieldb = $honey[$hony]; |
| visfruits += "document.getElementById('frmarker').style.position = 'absolute'; " |
| |
| visfruits += "document.getElementById('frmarker').style.left = mrkpos + 'px'; " |
| $yymain .= qq~ |
| visfruits += "document.getElementById('frmarker').style.top = '67px'; " |
| <tr class="green"> |
| visfruits += "parent.document.creator.ycord.value = ycor; " |
| <td align="right" valign="top" class="green"> |
| visfruits += "parent.document.creator.xcord.value = xcor; " |
| <label for="add_field0" class="green"><b>$newfieldb</b> |
| visfruits += "\} " |
| </td> |
| visfruits += "<\\/script> <\\/body> <\\/html>"; |
| <td align="left" valign="top" class="green"> |
| fruits.document.open("text/html"); |
| <input type="text" name="add_field0" id="add_field0" size="30" value="$newfield" maxlength="18" class="green" /> * |
| fruits.document.write(visfruits); |
| </td> |
| fruits.document.close(); |
| </tr>~; } |
| } |
| |
| ShowFruits() |
| # SpamFruits courtesy of Carsten Dalgaard # |
| </script>~; |
| if ($spamfruits == 1) { |
| $yymain .= $myregister_endrow; |
| my @fruits = ($fruittxt{'2'},$fruittxt{'3'},$fruittxt{'4'},$fruittxt{'5'}); |
| } |
| my $rdn = int(rand(4)); |
| |
| $fruit = $fruits[$rdn]; |
| if ( $RegAgree == 2 ) { |
| $yymain .= qq~ |
| if ($language) { |
| <tr> |
| fopen( AGREE, "$langdir/$language/agreement.txt" ); |
| <td class="windowbg" align="right" valign="top"> |
| } |
| <b>$fruittxt{'1'} $fruit:</b> |
| else { |
| </td> |
| fopen( AGREE, "$langdir/$lang/agreement.txt" ); |
| <td class="windowbg2" align="left" valign="middle"> |
| } |
| <input type="hidden" name="xcord" id="xcord" value="0" /> |
| @agreement = <AGREE>; |
| <input type="hidden" name="ycord" id="ycord" value="0" /> |
| fclose(AGREE); |
| <input type="hidden" name="thefruit" id="thefruit" value="$fruit" /> |
| $fullagree = join q{}, @agreement; |
| <iframe id="fruits" name="fruits" width="290" height="87" marginwidth="0" marginheight="0" frameborder="0" scrolling="no"></iframe> |
| $fullagree =~ s/\n/<br \/>/gsm; |
| <script language="JavaScript1.2" type="text/javascript"> |
| $yymain .= $myregister_regagree; |
| <!-- |
| $yymain =~ s/{yabb fullagree}/$fullagree/gsm; |
| function ShowFruits() { |
| |
| var visfruits = "<html><head><link rel='stylesheet' href='$extpagstyle' type='text/css' /></head><body class='windowbg2'> "; |
| } |
| visfruits += "<img src='$defaultimagesdir/fruits.png' width='290' height='75' name='fruitsview' id='fruitsview' border='0' style='position: absolute; top: 0px; left: 0px; cursor: pointer;' alt='' onclick='FruitClick(event)' /> "; |
| $yymain .= $myregister_endform; |
| visfruits += "<img src='$defaultimagesdir/fruitcheck.png' id='frmarker' style='z-index: 2; display: none;'> "; |
| $yymain .= qq~ |
| visfruits += "<script language='JavaScript1.2' type='text/javascript'> " |
| <script type="text/javascript"> |
| visfruits += "var xcor = 0; " |
| document.creator.regusername.focus(); |
| visfruits += "var ycor = 0; " |
| |
| visfruits += "var mrkpos = 30; " |
| function CheckRegFields() { |
| visfruits += "function FruitClick(event) \{ " |
| if (document.creator.regusername.value === '') { |
| visfruits += "xcor = (event.clientX); " |
| alert("$register_txt{'error_username'}"); |
| visfruits += "ycor = (event.clientY); " |
| document.creator.regusername.focus(); |
| visfruits += "if(xcor > 0) mrkpos = 30; " |
| return false; |
| visfruits += "if(xcor > 75) mrkpos = 100; " |
| }~; |
| visfruits += "if(xcor > 145) mrkpos = 170; " |
| if ( !$emailpassword ) { |
| visfruits += "if(xcor > 215) mrkpos = 240; " |
| $yymain .= qq~ |
| visfruits += "document.getElementById('frmarker').style.display = 'block'; " |
| if (document.creator.regusername.value == document.creator.passwrd1.value || document.creator.regrealname.value == document.creator.passwrd1.value) { |
| visfruits += "document.getElementById('frmarker').style.position = 'absolute'; " |
| alert("$register_txt{'error_usernameispass'}"); |
| visfruits += "document.getElementById('frmarker').style.left = mrkpos + 'px'; " |
| document.creator.regusername.focus(); |
| visfruits += "document.getElementById('frmarker').style.top = '67px'; " |
| return false; |
| visfruits += "parent.document.creator.ycord.value = ycor; " |
| }~; |
| visfruits += "parent.document.creator.xcord.value = xcor; " |
| } |
| visfruits += "\} " |
| $yymain .= qq~ |
| visfruits += "<\\/script> <\\/body> <\\/html>"; |
| if (document.creator.regrealname.value === '') { |
| fruits.document.open("text/html"); |
| alert("$register_txt{'error_realname'}"); |
| fruits.document.write(visfruits); |
| document.creator.regrealname.focus(); |
| fruits.document.close(); |
| return false; |
| } |
| }~ . |
| ShowFruits() |
| |
| //--> |
| ( |
| </script> |
| $name_cannot_be_userid |
| </td> |
| ? qq~ |
| </tr> |
| if (document.creator.regusername.value == document.creator.regrealname.value) { |
| ~; |
| alert("$register_txt{'error_name_cannot_be_userid'}"); |
| } |
| document.creator.regrealname.focus(); |
| |
| return false; |
| if ($RegAgree) { |
| }~ |
| if ($language) { |
| : q{} |
| fopen(AGREE, "$langdir/$language/agreement.txt"); |
| ) |
| } else { |
| |
| fopen(AGREE, "$langdir/$lang/agreement.txt"); |
| . qq~ |
| } |
| if (document.creator.email.value === '') { |
| @agreement = <AGREE>; |
| alert("$register_txt{'error_email'}"); |
| fclose(AGREE); |
| document.creator.email.focus(); |
| $fullagree = join("", @agreement); |
| return false; |
| $fullagree =~ s/\n/<br \/>/g; |
| }~ . |
| $yymain .= qq~ |
| |
| <tr> |
| ( |
| <td colspan="2" class="titlebg"> |
| $imp_email_check ? qq~ |
| <img src="$imagesdir/xx.gif" alt="$register_txt{'764a'}" title="$register_txt{'764a'}" border="0" /> <b>$register_txt{'764a'}</b> |
| if (document.creator.email2.value === '') { |
| </td> |
| alert("$register_txt{'error_email2'}"); |
| </tr> |
| document.creator.email2.focus(); |
| <tr> |
| return false; |
| <td colspan="2" class="windowbg"> |
| } |
| <label for="regagree"><span style="float: left; padding: 5px;">$fullagree</span></label> |
| if (document.creator.email.value != document.creator.email2.value) { |
| </td> |
| alert("$register_txt{'error_email3'}"); |
| </tr> |
| document.creator.email.focus(); |
| <tr> |
| return false; |
| <td colspan="2" class="windowbg2" align="center"> |
| }~ : q{} |
| <label for="regagree"><b>$register_txt{'585'}</b></label> <input type="radio" name="regagree" id="regagree" value="yes" /> * <label for="regnoagree"><b>$register_txt{'586'}</b></label> <input type="radio" name="regagree" id="regnoagree" value="no" /> |
| ) . |
| </td> |
| |
| </tr>~; |
| ( |
| } |
| $birthday_on_reg |
| $yymain .= qq~ |
| ? q~ |
| <tr> |
| if (~ |
| <td colspan="2" align="center" class="titlebg"> |
| . ( |
| <br /> |
| $birthday_on_reg == 1 |
| <label for="submitbutton">$register_txt{'95'}</label><br /> |
| ? 'document.creator.birth_day.value.length && ' |
| <br /> |
| : q{} |
| <input type="submit" id="submitbutton" value="$register_txt{'97'}" class="button" /><br /><br /> |
| ) |
| </td> |
| . qq~(document.creator.birth_day.value.length < 2 || document.creator.birth_day.value < 1 || document.creator.birth_day.value > 31 || (/\\D/.test)(document.creator.birth_day.value))) { |
| </tr> |
| alert("$register_txt{'error_birth_day'}"); |
| </table> |
| document.creator.birth_day.focus(); |
| </form> |
| return false; |
| |
| } |
| <script type="text/javascript" language="JavaScript"> |
| if (~ |
| <!-- |
| . ( |
| document.creator.regusername.focus(); |
| $birthday_on_reg == 1 |
| |
| ? 'document.creator.birth_month.value.length && ' |
| function CheckRegFields() { |
| : q{} |
| if (document.creator.regusername.value == '') { |
| ) |
| alert("$register_txt{'error_username'}"); |
| . qq~(document.creator.birth_month.value.length < 2 || document.creator.birth_month.value < 1 || document.creator.birth_month.value > 12 || (/\\D/.test)(document.creator.birth_month.value))) { |
| document.creator.regusername.focus(); |
| alert("$register_txt{'error_birth_month'}"); |
| return false; |
| document.creator.birth_month.focus(); |
| } |
| return false; |
| if (document.creator.regusername.value == document.creator.passwrd1.value || document.creator.regrealname.value == document.creator.passwrd1.value) { |
| } |
| alert("$register_txt{'error_usernameispass'}"); |
| if (~ |
| document.creator.regusername.focus(); |
| . ( |
| return false; |
| $birthday_on_reg == 1 |
| } |
| ? 'document.creator.birth_year.value.length && ' |
| if (document.creator.regrealname.value == '') { |
| : q{} |
| alert("$register_txt{'error_realname'}"); |
| ) |
| document.creator.regrealname.focus(); |
| . qq~(document.creator.birth_year.value.length < 4 || (/\\D/.test)(document.creator.birth_year.value))) { |
| return false; |
| alert("$register_txt{'error_birth_year'}"); |
| }~ . |
| document.creator.birth_year.focus(); |
| |
| return false; |
| ($name_cannot_be_userid ? qq~ |
| } |
| if (document.creator.regusername.value == document.creator.regrealname.value) { |
| if (~ |
| alert("$register_txt{'error_name_cannot_be_userid'}"); |
| . ( |
| document.creator.regrealname.focus(); |
| $birthday_on_reg == 1 |
| return false; |
| ? 'document.creator.birth_year.value.length && ' |
| }~ : '') |
| : q{} |
| |
| ) |
| . qq~ |
| . qq~(document.creator.birth_year.value < ($year - 120) || document.creator.birth_year.value > $year)) { |
| if (document.creator.email.value == '') { |
| alert("$register_txt{'error_birth_year_real'}"); |
| alert("$register_txt{'error_email'}"); |
| document.creator.birth_year.focus(); |
| document.creator.email.focus(); |
| return false; |
| return false; |
| }~ |
| }~ . |
| : q{} |
| |
| ) |
| ($birthday_on_reg ? qq~ |
| |
| if (~ . ($birthday_on_reg == 1 ? 'document.creator.birth_day.value.length && ' : '') . qq~(document.creator.birth_day.value.length < 2 || document.creator.birth_day.value < 1 || document.creator.birth_day.value > 31 || /\\D/.test(document.creator.birth_day.value))) { |
| . qq~ |
| alert("$register_txt{'error_birth_day'}"); |
| var emailpassword = $emailpassword; |
| document.creator.birth_day.focus(); |
| if (emailpassword === 0) { |
| return false; |
| if (document.creator.passwrd1.value === '' || document.creator.passwrd2.value === '') { |
| } |
| alert("$register_txt{'error_pass1'}"); |
| if (~ . ($birthday_on_reg == 1 ? 'document.creator.birth_month.value.length && ' : '') . qq~(document.creator.birth_month.value.length < 2 || document.creator.birth_month.value < 1 || document.creator.birth_month.value > 12 || /\\D/.test(document.creator.birth_month.value))) { |
| document.creator.passwrd1.focus(); |
| alert("$register_txt{'error_birth_month'}"); |
| return false; |
| document.creator.birth_month.focus(); |
| } |
| return false; |
| if (document.creator.passwrd1.value != document.creator.passwrd2.value) { |
| } |
| alert("$register_txt{'error_pass2'}"); |
| if (~ . ($birthday_on_reg == 1 ? 'document.creator.birth_year.value.length && ' : '') . qq~(document.creator.birth_year.value.length < 4 || /\\D/.test(document.creator.birth_year.value))) { |
| document.creator.passwrd1.focus(); |
| alert("$register_txt{'error_birth_year'}"); |
| return false; |
| document.creator.birth_year.focus(); |
| } |
| return false; |
| } |
| } |
| var regcheck = $regcheck; |
| if (~ . ($birthday_on_reg == 1 ? 'document.creator.birth_year.value.length && ' : '') . qq~(document.creator.birth_year.value < ($year - 120) || document.creator.birth_year.value > $year)) { |
| if (regcheck > 0 && document.creator.verification.value === '') { |
| alert("$register_txt{'error_birth_year_real'}"); |
| alert("$register_txt{'error_verification'}"); |
| document.creator.birth_year.focus(); |
| document.creator.verification.focus(); |
| return false; |
| return false; |
| }~ : '') |
| }~ . |
| |
| |
| . qq~ |
| ( |
| if ($emailpassword == 0) { |
| $en_spam_questions && -e "$langdir/$language/spam.questions" |
| if (document.creator.passwrd1.value == '' || document.creator.passwrd2.value == '') { |
| ? qq~ |
| alert("$register_txt{'error_pass1'}"); |
| if (document.creator.verification_question.value === '') { |
| document.creator.passwrd1.focus(); |
| alert("$register_txt{'error_verification_question'}"); |
| return false; |
| document.creator.verification_question.focus(); |
| } |
| return false; |
| if (document.creator.passwrd1.value != document.creator.passwrd2.value) { |
| }~ |
| alert("$register_txt{'error_pass2'}"); |
| : q{} |
| document.creator.passwrd1.focus(); |
| ) |
| return false; |
| |
| } |
| . qq~ |
| } |
| var regtype = $regtype; |
| if ($regcheck > 0 && document.creator.verification.value == '') { |
| var RegAgree = $RegAgree; |
| alert("$register_txt{'error_verification'}"); |
| var gender_on_reg = $gender_on_reg; |
| document.creator.verification.focus(); |
| if (regtype == 1 && document.creator.reason.value === '') { |
| return false; |
| alert("$register_txt{'error_reason'}"); |
| }~ . |
| document.creator.reason.focus(); |
| |
| return false; |
| ($en_spam_questions ? qq~ |
| } |
| if (document.creator.verification_question.value == '') { |
| if (RegAgree == 2 && document.creator.regagree[0].checked !== true) { |
| alert("$register_txt{'error_verification_question'}"); |
| alert("$register_txt{'error_agree'}"); |
| document.creator.verification_question.focus(); |
| return false; |
| return false; |
| } |
| }~ : '') |
| |
| |
| if (gender_on_reg > 1 && !document.creator.gender.value) { |
| . qq~ |
| alert("$register_txt{'error_gender'}"); |
| if ($regtype == 1 && document.creator.reason.value == '') { |
| document.creator.gender.focus(); |
| alert("$register_txt{'error_reason'}"); |
| return false; |
| document.creator.reason.focus(); |
| } |
| return false; |
| return true; |
| } |
| } |
| if ($RegAgree > 0 && document.creator.regagree[0].checked != true) { |
| |
| alert("$register_txt{'error_agree'}"); |
| function jumpatnext(from,to,length) { |
| return false; |
| window.setTimeout('if (' + from + '.value.length == ' + length + ') ' + to + '.focus();', 1); |
| } |
| } |
| |
| |
| if ($gender_on_reg > 1 && !document.creator.gender.value) { |
| |
| alert("$register_txt{'error_gender'}"); |
| |
| document.creator.gender.focus(); |
| |
| return false |
| |
| } |
| |
| return true; |
| |
| } |
| |
| |
| |
| function jumpatnext(from,to,length) { |
| |
| window.setTimeout('if (' + from + '.value.length == ' + length + ') ' + to + '.focus();', 1); |
| |
| } |
| |
| //--> |
| |
| </script> |
| </script> |
| ~; |
| ~; |
| &template; |
| template(); |
| |
| return; |
| } |
| } |
| |
| |
| sub Register2 { |
| sub Register2 { |
| if (!$regtype) { &fatal_error("registration_disabled"); } |
| if ( !$regtype ) { fatal_error('registration_disabled'); } |
| if ($RegAgree && $FORM{'regagree'} ne 'yes') { &fatal_error('no_regagree'); } |
| if ( $RegAgree > 0 && $FORM{'regagree'} ne 'yes' ) { |
| my %member; |
| fatal_error('no_regagree'); |
| while (($key, $value) = each(%FORM)) { |
| } |
| $value =~ s~\A\s+~~; |
| my %member; |
| $value =~ s~\s+\Z~~; |
| while ( ( $key, $value ) = each %FORM ) { |
| unless ($key eq "reason") {$value =~ s~[\n\r]~~g;} |
| $value =~ s/\A\s+//xsm; |
| $member{$key} = $value; |
| $value =~ s/\s+\Z//xsm; |
| } |
| if ( $key ne 'reason' ) { $value =~ s/[\n\r]//gxsm; } |
| if ($member{'domain'}) { $member{'email'} .= $member{'domain'}; } |
| $member{$key} = $value; |
| $member{'regusername'} =~ s/\s/_/g; |
| } |
| $member{'regrealname'} =~ s~\t+~\ ~g; |
| if ( $member{'domain'} ) { $member{'email'} .= $member{'domain'}; } |
| |
| # $member{'regusername'} =~ s/\s/_/gxsm; |
| # Make sure users can't register with banned details |
| $member{'regrealname'} =~ s/\t+/\ /gsm; |
| &email_domain_check($member{'email'}); |
| |
| &banning($member{'regusername'}, $member{'email'}); |
| # If enabled check if user has a valid e-mail address (needs Net::DNS to be installed) |
| |
| if ( $imp_email_check == 1 ) { |
| # check if there is a system hash named like this by checking existence through size |
| eval { |
| &fatal_error("system_prohibited_id", "($member{'regusername'})") if keys(%{ $member{'regusername'} }) > 0; |
| require Net::DNS; |
| &fatal_error("id_to_long","($member{'regusername'})") if length($member{'regusername'}) > 25; |
| }; |
| &fatal_error("email_to_long","($member{'email'})") if length($member{'email'}) > 100; |
| if ( !$EVAL_ERROR ) { |
| &fatal_error("no_username","($member{'regusername'})") if $member{'regusername'} eq ''; |
| my $helo; |
| &fatal_error("id_alfa_only","($member{'regusername'})") if $member{'regusername'} eq '_'; |
| require Mail::CheckUser; |
| &fatal_error("id_reserved","$member{'regusername'}") if $member{'regusername'} =~ /guest/i; |
| Mail::CheckUser->import(qw(check_email last_check)); |
| &fatal_error("invalid_character","$register_txt{'35'} $register_txt{'241re'}") if $member{'regusername'} =~ /[^\w\+\-\.\@]/; |
| $Mail::CheckUser::Sender_Addr = $webmaster_email; |
| &fatal_error("no_email","($member{'regusername'})") if $member{'email'} eq ""; |
| if ($boardurl =~ /http\:\/\/(.*?)\//){ $Mail::CheckUser::Helo_Domain = $1; } |
| &fatal_error("id_taken","($member{'regusername'})") if -e ("$memberdir/$member{'regusername'}.vars"); |
| if (check_email($member{'email'})) { |
| &fatal_error("password_is_userid") if $member{'regusername'} eq $member{'passwrd1'}; |
| my $email_ok = 1; |
| &fatal_error("no_reg_reason") if $member{'reason'} eq "" && $regtype == 1; |
| } |
| |
| else { |
| if ($spamfruits == 1) { |
| my $failure = last_check()->{code}; |
| if($member{'ycord'} < 5 || $member{'ycord'} > 70) { &fatal_error("", "$fruittxt{'6'}"); } |
| fatal_error(q{}, "$mail_check{'address'} $member{'email'} $mail_check{'invalid'} $mail_check{'reason'} $mail_check{$failure}"); |
| if($member{'thefruit'} eq $fruittxt{'2'} && ($member{'xcord'} < 5 || $member{'xcord'} > 75)) { &fatal_error("", "$fruittxt{'6'}"); } |
| } |
| if($member{'thefruit'} eq $fruittxt{'3'} && ($member{'xcord'} < 75 || $member{'xcord'} > 145)) { &fatal_error("", "$fruittxt{'6'}"); } |
| } |
| if($member{'thefruit'} eq $fruittxt{'4'} && ($member{'xcord'} < 145 || $member{'xcord'} > 215)) { &fatal_error("", "$fruittxt{'6'}"); } |
| } |
| if($member{'thefruit'} eq $fruittxt{'5'} && ($member{'xcord'} < 215 || $member{'xcord'} > 285)) { &fatal_error("", "$fruittxt{'6'}"); } |
| |
| } |
| # Make sure users can't register with banned details |
| |
| email_domain_check( $member{'email'} ); |
| &FromChars($member{'regrealname'}); |
| banning( $member{'regusername'}, $member{'email'} ); |
| $convertstr = $member{'regrealname'}; |
| |
| $convertcut = 30; |
| # check if there is a system hash named like this by checking existence through size |
| &CountChars; |
| if ( keys( %{ $member{'regusername'} } ) > 0 ) { |
| $member{'regrealname'} = $convertstr; |
| fatal_error( 'system_prohibited_id', "($member{'regusername'})" ); |
| &fatal_error("realname_to_long","($member{'regrealname'} => $convertstr)") if $cliped; |
| } |
| &fatal_error('invalid_character', "$register_txt{'38'} $register_txt{'241re'}") if $member{'regrealname'} =~ /[^ \w\x80-\xFF\[\]\(\)#\%\+,\-\|\.:=\?\@\^]/; |
| if ( length( $member{'regusername'} ) > 25 ) { |
| |
| fatal_error( 'id_to_long', "($member{'regusername'})" ); |
| if ($name_cannot_be_userid && lc $member{'regusername'} eq lc $member{'regrealname'}) { &fatal_error('name_is_userid'); } |
| } |
| |
| if ( $member{'email'} ne $member{'email2'} && $imp_email_check ) { |
| if (lc $member{'regusername'} eq lc &MemberIndex("check_exist", $member{'regusername'})) { &fatal_error("id_taken","($member{'regusername'})"); } |
| fatal_error( 'email_mismatch' ); |
| if (lc $member{'email'} eq lc &MemberIndex("check_exist", $member{'email'})) { &fatal_error("email_taken","($member{'email'})"); } |
| } |
| if (lc $member{'regrealname'} eq lc &MemberIndex("check_exist", $member{'regrealname'})) { &fatal_error("name_taken"); } |
| if ( length( $member{'email'} ) > 100 ) { |
| if ( &CheckCensor($member{'regusername'}) ne "" ) { &fatal_error("censor1",&CheckCensor($member{'regusername'})); } |
| fatal_error( 'email_to_long', "($member{'email'})" ); |
| if ( &CheckCensor($member{'email'}) ne "" ) { &fatal_error("censor2",&CheckCensor($member{'email'})); } |
| } |
| if ( &CheckCensor($member{'regrealname'}) ne "" ) { &fatal_error("censor3",&CheckCensor($member{'regrealname'})); } |
| if ( $member{'regusername'} eq q{} ) { |
| if ( $honeypot == 1 && $member{'add_field0'} ne q{}) {&fatal_error("bad_bot");} |
| fatal_error( 'no_username', "($member{'regusername'})" ); |
| |
| } |
| if ($regtype == 1) { |
| if ( $member{'regusername'} eq q{_} ) { |
| $convertstr = $member{'reason'}; |
| fatal_error( 'id_alfa_only', "($member{'regusername'})" ); |
| $convertcut = $RegReasonSymbols; |
| } |
| &CountChars; |
| if ( $member{'regusername'} =~ /guest/ixsm ) { |
| $member{'reason'} = $convertstr; |
| fatal_error( 'id_reserved', "$member{'regusername'}" ); |
| |
| } |
| &FromChars($member{'reason'}); |
| if ( $member{'regusername'} =~ /[^\w\+\-\_\@\.]/sm ) { |
| &ToHTML($member{'reason'}); |
| fatal_error( 'invalid_character', |
| &ToChars($member{'reason'}); |
| "$register_txt{'35'} $register_txt{'241e'}" ); |
| $member{'reason'} =~ s~[\n\r]{1,2}~<br />~ig; |
| } |
| } |
| if ( $member{'regusername'} =~ /^[0-9]+$/sm ) { |
| |
| fatal_error( 'all_numbers', |
| if ($regcheck) { require "$sourcedir/Decoder.pl"; &validation_check($member{'verification'}); } |
| "$register_txt{'35'} $register_txt{'241n'}" ); |
| if ($en_spam_questions) { |
| } |
| fopen(SPAMQUESTIONS, "<$langdir/$language/spam.questions") || &fatal_error("cannot_open","$langdir/$language/spam.questions", 1); |
| if ( $member{'email'} eq q{} ) { |
| @spam_questions = <SPAMQUESTIONS>; |
| fatal_error( 'no_email', "($member{'regusername'})" ); |
| fclose(SPAMQUESTIONS); |
| } |
| foreach my $verification_question (@spam_questions) { |
| if ( -e ("$memberdir/$member{'regusername'}.vars") ) { |
| chomp $verification_question; |
| fatal_error( 'id_taken', "($member{'regusername'})" ); |
| if ($verification_question =~ /$member{'verification_question_id'}/) { |
| } |
| (undef, undef, $verification_answer) = split(/\|/, $verification_question); |
| if ( $member{'regusername'} eq $member{'passwrd1'} ) { |
| } |
| fatal_error('password_is_userid'); |
| } |
| } |
| $member{'verification_question'} =~ s/\A\s+//; |
| if ( $member{'reason'} eq q{} && $regtype == 1 ) { |
| $member{'verification_question'} =~ s/\s+\Z//; |
| fatal_error('no_reg_reason'); |
| unless ($spam_questions_case) { |
| } |
| $verification_answer = lc($verification_answer); |
| |
| $member{'verification_question'} = lc($member{'verification_question'}); |
| if ( $spamfruits == 1 ) { |
| } |
| if ( $member{'ycord'} < 5 || $member{'ycord'} > 70 ) { |
| &fatal_error("no_verification_question") if $member{'verification_question'} eq ''; |
| fatal_error( q{}, "$fruittxt{'6'}" ); |
| @verificationanswer = split(/,/, $verification_answer); |
| } |
| foreach (@verificationanswer) { |
| if ( $member{'thefruit'} eq $fruittxt{'2'} |
| $_ =~ s/\A\s+//; |
| && ( $member{'xcord'} < 5 || $member{'xcord'} > 75 ) ) |
| $_ =~ s/\s+\Z//; |
| { |
| } |
| fatal_error( q{}, "$fruittxt{'6'}" ); |
| unless (grep { $member{'verification_question'} eq $_ } @verificationanswer) { &fatal_error("wrong_verification_question"); } |
| } |
| } |
| if ( $member{'thefruit'} eq $fruittxt{'3'} |
| |
| && ( $member{'xcord'} < 75 || $member{'xcord'} > 145 ) ) |
| if ($emailpassword) { |
| { |
| srand(); |
| fatal_error( q{}, "$fruittxt{'6'}" ); |
| $member{'passwrd1'} = int(rand(100)); |
| } |
| $member{'passwrd1'} =~ tr/0123456789/ymifxupbck/; |
| if ( $member{'thefruit'} eq $fruittxt{'4'} |
| $_ = int(rand(77)); |
| && ( $member{'xcord'} < 145 || $member{'xcord'} > 215 ) ) |
| $_ =~ tr/0123456789/q8dv7w4jm3/; |
| { |
| $member{'passwrd1'} .= $_; |
| fatal_error( q{}, "$fruittxt{'6'}" ); |
| $_ = int(rand(89)); |
| } |
| $_ =~ tr/0123456789/y6uivpkcxw/; |
| if ( $member{'thefruit'} eq $fruittxt{'5'} |
| $member{'passwrd1'} .= $_; |
| && ( $member{'xcord'} < 215 || $member{'xcord'} > 285 ) ) |
| $_ = int(rand(188)); |
| { |
| $_ =~ tr/0123456789/poiuytrewq/; |
| fatal_error( q{}, "$fruittxt{'6'}" ); |
| $member{'passwrd1'} .= $_; |
| } |
| $_ = int(rand(65)); |
| } |
| $_ =~ tr/0123456789/lkjhgfdaut/; |
| |
| $member{'passwrd1'} .= $_; |
| FromChars( $member{'regrealname'} ); |
| } else { |
| $convertstr = $member{'regrealname'}; |
| &fatal_error("password_mismatch","($member{'regusername'})") if $member{'passwrd1'} ne $member{'passwrd2'}; |
| $convertcut = 30; |
| &fatal_error("no_password","($member{'regusername'})") if $member{'passwrd1'} eq ''; |
| CountChars(); |
| &fatal_error("invalid_character","$register_txt{'36'} $register_txt{'241'}") if $member{'passwrd1'} =~ /[^\s\w!\@#\$\%\^&\*\(\)\+\|`~\-=\\:;'",\.\/\?\[\]\{\}]/; |
| $member{'regrealname'} = $convertstr; |
| } |
| if ($cliped) { |
| &fatal_error("invalid_character","$register_txt{'69'} $register_txt{'241e'}") if $member{'email'} !~ /^[\w\-\.\+]+\@[\w\-\.\+]+\.\w{2,4}$/; |
| fatal_error( 'realname_to_long', |
| &fatal_error("invalid_email") if $member{'email'} =~ /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)|(\.$)/ || $member{'email'} !~ /\A.+@\[?(\w|[-.])+\.[a-zA-Z]{2,4}|[0-9]{1,4}\]?\Z/; |
| "($member{'regrealname'} => $convertstr)" ); |
| |
| } |
| fopen(RESERVE, "$vardir/reserve.txt") || &fatal_error("cannot_open","$vardir/reserve.txt", 1); |
| if ( $member{'regrealname'} =~ |
| @reserve = <RESERVE>; |
| /[^ \w\x80-\xFF\[\]\(\)#\%\+,\-\|\.:=\?\@\^]/sm ) |
| fclose(RESERVE); |
| { |
| fopen(RESERVECFG, "$vardir/reservecfg.txt") || &fatal_error("cannot_open","$vardir/reservecfg.txt", 1); |
| fatal_error( 'invalid_character', |
| @reservecfg = <RESERVECFG>; |
| "$register_txt{'38'} $register_txt{'241re'}" ); |
| fclose(RESERVECFG); |
| } |
| for ($a = 0; $a < @reservecfg; $a++) { |
| |
| chomp $reservecfg[$a]; |
| if ( $name_cannot_be_userid |
| } |
| && lc $member{'regusername'} eq lc $member{'regrealname'} ) |
| $matchword = $reservecfg[0] eq 'checked'; |
| { |
| $matchcase = $reservecfg[1] eq 'checked'; |
| fatal_error('name_is_userid'); |
| $matchuser = $reservecfg[2] eq 'checked'; |
| } |
| $matchname = $reservecfg[3] eq 'checked'; |
| |
| $namecheck = $matchcase eq 'checked' ? $member{'regusername'} : lc $member{'regusername'}; |
| if ( |
| $realnamecheck = $matchcase eq 'checked' ? $member{'regrealname'} : lc $member{'regrealname'}; |
| lc $member{'regusername'} eq |
| |
| lc MemberIndex( 'check_exist', $member{'regusername'}, 0 ) ) |
| foreach $reserved (@reserve) { |
| { |
| chomp $reserved; |
| fatal_error( 'id_taken', "($member{'regusername'})" ); |
| $reservecheck = $matchcase ? $reserved : lc $reserved; |
| } |
| if ($matchuser) { |
| if ( |
| if ($matchword) { |
| lc $member{'email'} eq lc MemberIndex( 'check_exist', $member{'email'}, 2 ) |
| if ($namecheck eq $reservecheck) { &fatal_error('id_reserved',"$reserved"); } |
| ) |
| } else { |
| { |
| if ($namecheck =~ $reservecheck) { &fatal_error('id_reserved',"$reserved"); } |
| fatal_error( 'email_taken', "($member{'email'})" ); |
| } |
| } |
| } |
| if ( |
| if ($matchname) { |
| lc $member{'regrealname'} eq |
| if ($matchword) { |
| lc MemberIndex( 'check_exist', $member{'regrealname'}, 1 ) ) |
| if ($realnamecheck eq $reservecheck) { &fatal_error('name_reserved',"$reserved"); } |
| { |
| } else { |
| fatal_error('name_taken'); |
| if ($realnamecheck =~ $reservecheck) { &fatal_error('name_reserved',"$reserved"); } |
| } |
| } |
| if ( Censor( $member{'regusername'} ) ne $member{'regusername'} ) { |
| } |
| fatal_error( 'censor1', CheckCensor( $member{'regusername'} ) ); |
| } |
| } |
| |
| if ( Censor( $member{'email'} ) ne $member{'email'} ) { |
| if ($default_template) { $new_template = $default_template; } |
| fatal_error( 'censor2', CheckCensor( $member{'email'} ) ); |
| else { $new_template = qq~Forum default~; } |
| } |
| |
| if ( Censor( $member{'regrealname'} ) ne $member{'regrealname'} ) { |
| # check if user isn't already registered |
| fatal_error( 'censor3', CheckCensor( $member{'regrealname'} ) ); |
| &fatal_error("id_taken") if (-e ("$memberdir/$member{'regusername'}.vars")); |
| } |
| # check if user isn't already in pre-registration |
| if ( $honeypot == 1 && $member{'add_field0'} ne q{} ) { |
| &fatal_error("already_preregged") if (-e ("$memberdir/$member{'regusername'}.pre")); |
| fatal_error('bad_bot'); |
| &fatal_error("already_preregged") if (-e ("$memberdir/$member{'regusername'}.wait")); |
| } |
| |
| |
| if ($new_template !~ m^\A[0-9a-zA-Z\_\(\)\ \#\%\-\:\+\?\$\&\~\.\,\@]+\Z^ && $new_template ne '') { &fatal_error('invalid_template'); } |
| if ( $regtype == 1 ) { |
| if ($member{'language'} !~ m^\A[0-9a-zA-Z\_\(\)\ \#\%\-\:\+\?\$\&\~\.\,\@]+\Z^ && $member{'language'} ne '') { &fatal_error('invalid_language'); } |
| $convertstr = $member{'reason'}; |
| |
| $convertcut = $RegReasonSymbols; |
| &ToHTML($member{'language'}); |
| CountChars(); |
| |
| $member{'reason'} = $convertstr; |
| $reguser = $member{'regusername'}; |
| |
| $registerdate = &timetostring($date); |
| FromChars( $member{'reason'} ); |
| $language = $member{'language'}; |
| ToHTML( $member{'reason'} ); |
| |
| ToChars( $member{'reason'} ); |
| &ToHTML($member{'regrealname'}); |
| $member{'reason'} =~ s/[\n\r]{1,2}/<br \/>/igsm; |
| |
| } |
| if ($birthday_on_reg) { |
| |
| $member{'birth_month'} =~ s/\D//g; |
| if ($regcheck) { |
| $member{'birth_day'} =~ s/\D//g; |
| require Sources::Decoder; |
| $member{'birth_year'} =~ s/\D//g; |
| validation_check( $member{'verification'} ); |
| if ($birthday_on_reg == 1) { |
| } |
| $member{'birth_month'} = '' if length($member{'birth_month'}) < 2 || $member{'birth_month'} < 1 || $member{'birth_month'} > 12; |
| $min_reg_time ||= 0; |
| $member{'birth_day'} = '' if length($member{'birth_day'}) < 2 || $member{'birth_day'} < 1 || $member{'birth_day'} > 31; |
| if ( $min_reg_time > 0 ) { |
| $member{'birth_year'} = '' if length($member{'birth_year'}) < 4 || $member{'birth_year'} < ($year - 120) || $member{'birth_year'} > $year; |
| $reg_finish_time = $date - $member{'reg_start_time'}; |
| if ($member{'birth_day'} && $member{'birth_month'} && $member{'birth_year'}) { ${$uid.$reguser}{'bday'} = "$member{'birth_month'}/$member{'birth_day'}/$member{'birth_year'}"; } |
| if ( $reg_finish_time < $min_reg_time || !$member{'reg_start_time'} ) { |
| |
| fatal_error( q{}, "$register_txt{'error_min_reg_time'}" ); |
| } elsif ($birthday_on_reg == 2) { |
| } |
| &fatal_error("",$register_txt{'error_birth_month'}) if length($member{'birth_month'}) < 2 || $member{'birth_month'} < 1 || $member{'birth_month'} > 12; |
| } |
| &fatal_error("",$register_txt{'error_birth_day'}) if length($member{'birth_day'}) < 2 || $member{'birth_day'} < 1 || $member{'birth_day'} > 31; |
| |
| &fatal_error("",$register_txt{'error_birth_year'}) if length($member{'birth_year'}) < 4; |
| if ( $en_spam_questions && -e "$langdir/$language/spam.questions" ) { |
| &fatal_error("",$register_txt{'error_birth_year_real'}) if $member{'birth_year'} < ($year - 120) || $member{'birth_year'} > $year; |
| SpamQuestionCheck( |
| ${$uid.$reguser}{'bday'} = "$member{'birth_month'}/$member{'birth_day'}/$member{'birth_year'}"; |
| $member{'verification_question'}, |
| } |
| $member{'verification_question_id'} |
| } |
| ); |
| if ($gender_on_reg) { |
| } |
| ${$uid.$reguser}{'gender'} = $member{'gender'}; |
| |
| } |
| if ($emailpassword) { |
| |
| srand; |
| ${$uid.$reguser}{'password'} = &encode_password($member{'passwrd1'}); |
| $member{'passwrd1'} = int rand 100; |
| ${$uid.$reguser}{'realname'} = $member{'regrealname'}; |
| $member{'passwrd1'} =~ tr/0123456789/ymifxupbck/; |
| ${$uid.$reguser}{'email'} = lc($member{'email'}); |
| $_ = int rand 77; |
| ${$uid.$reguser}{'postcount'} = 0; |
| $_ =~ tr/0123456789/q8dv7w4jm3/; |
| ${$uid.$reguser}{'regreason'} = $member{'reason'}; |
| $member{'passwrd1'} .= $_; |
| ${$uid.$reguser}{'usertext'} = $defaultusertxt; |
| $_ = int rand 89; |
| ${$uid.$reguser}{'userpic'} = "blank.gif"; |
| $_ =~ tr/0123456789/y6uivpkcxw/; |
| ${$uid.$reguser}{'regdate'} = $registerdate; |
| $member{'passwrd1'} .= $_; |
| ${$uid.$reguser}{'regtime'} = $date; |
| $_ = int rand 188; |
| ${$uid.$reguser}{'timeselect'} = $timeselected; |
| $_ =~ tr/0123456789/poiuytrewq/; |
| ${$uid.$reguser}{'timeoffset'} = $timeoffset; |
| $member{'passwrd1'} .= $_; |
| ${$uid.$reguser}{'dsttimeoffset'} = $dstoffset; |
| $_ = int rand 65; |
| ${$uid.$reguser}{'lastips'} = $user_ip; |
| $_ =~ tr/0123456789/lkjhgfdaut/; |
| ${$uid.$reguser}{'hidemail'} = $member{'hideemail'} ? 1 : 0; |
| $member{'passwrd1'} .= $_; |
| ${$uid.$reguser}{'timeformat'} = qq~MM D+ YYYY @ HH:mm:ss*~; |
| } |
| ${$uid.$reguser}{'template'} = $new_template; |
| else { |
| ${$uid.$reguser}{'language'} = $language; |
| if ( $member{'passwrd1'} ne $member{'passwrd2'} ) { |
| ${$uid.$reguser}{'pageindex'} = qq~1|1|1|1~; |
| fatal_error( 'password_mismatch', "($member{'regusername'})" ); |
| if (($addmemgroup_enabled == 1 || $addmemgroup_enabled == 3) && $member{'joinmemgroup'} ne '') { |
| } |
| my @newmemgr; |
| if ( $member{'passwrd1'} eq q{} ) { |
| foreach (split(/, /, $member{'joinmemgroup'})) { |
| fatal_error( 'no_password', "($member{'regusername'})" ); |
| if ($NoPost{$_} && (split /\|/, $NoPost{$_})[10] == 1) { push(@newmemgr, $_); } |
| } |
| } |
| if ( $member{'passwrd1'} =~ |
| ${$uid.$reguser}{'addgroups'} = join(',', @newmemgr); |
| /[^\s\w!\@#\$\%\^&\*\(\)\+\|`~\-=\\:;'",\.\/\?\[\]\{\}]/xsm ) |
| } |
| { |
| |
| fatal_error( 'invalid_character', |
| if ($regtype == 1 || $regtype == 2) { |
| "$register_txt{'36'} $register_txt{'241'}" ); |
| my (@reglist,@x); |
| } |
| # If a pre-registration list exists load it |
| } |
| if (-e "$memberdir/memberlist.inactive") { |
| if ( $member{'email'} !~ /^[\w\-\.\+]+\@[\w\-\.\+]+\.\w{2,4}$/xsm ) { |
| fopen(INACT, "$memberdir/memberlist.inactive"); |
| fatal_error( 'invalid_character', |
| @reglist = <INACT>; |
| "$register_txt{'69'} $register_txt{'241e'}" ); |
| fclose(INACT); |
| } |
| } |
| if ( $member{'email'} =~ /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)|(\.$)/xsm |
| # If a approve-registration list exists load it too |
| || $member{'email'} !~ |
| if (-e "$memberdir/memberlist.approve") { |
| /\A.+@\[?(\w|[-.])+\.[a-zA-Z]{2,4}|[0-9]{1,4}\]?\Z/xsm ) |
| fopen(APPROVE, "$memberdir/memberlist.approve"); |
| { |
| push(@reglist, <APPROVE>); |
| fatal_error('invalid_email'); |
| fclose(APPROVE); |
| } |
| } |
| |
| foreach (@reglist) { |
| fopen( RESERVE, "$vardir/reserve.txt" ) |
| @x = split(/\|/, $_); |
| or fatal_error( 'cannot_open', "$vardir/reserve.txt", 1 ); |
| if ($reguser eq $x[2]) { &fatal_error("already_preregged"); } |
| @reserve = <RESERVE>; |
| if (lc $member{'email'} eq lc $x[4]) { &fatal_error("email_already_preregged"); } |
| fclose(RESERVE); |
| } |
| fopen( RESERVECFG, "$vardir/reservecfg.txt" ) |
| |
| or fatal_error( 'cannot_open', "$vardir/reservecfg.txt", 1 ); |
| # create pre-registration .pre file and write log and inactive list |
| @reservecfg = <RESERVECFG>; |
| require "$sourcedir/Decoder.pl"; |
| fclose(RESERVECFG); |
| &validation_code; |
| |
| $activationcode = substr($sessionid, 0, 20); |
| for my $aa ( 0 .. $#reservecfg ) { |
| |
| chomp $reservecfg[$aa]; |
| if ($extendedprofiles) { |
| } |
| require "$sourcedir/ExtendedProfiles.pl"; |
| $matchword = $reservecfg[0] eq 'checked'; |
| my $error = &ext_validate_submition($reguser,$reguser); |
| $matchcase = $reservecfg[1] eq 'checked'; |
| if ($error ne "") { &fatal_error("extended_profiles_validation",$error); } |
| $matchuser = $reservecfg[2] eq 'checked'; |
| &ext_saveprofile($reguser); |
| $matchname = $reservecfg[3] eq 'checked'; |
| } |
| $namecheck = |
| |
| $matchcase eq 'checked' |
| &UserAccount($reguser, "preregister"); |
| ? $member{'regusername'} |
| if ($do_scramble_id) { $cryptuser = &cloak($reguser); } else { $cryptuser = $reguser; } |
| : lc $member{'regusername'}; |
| if ($emailpassword) { $regpass = $member{'passwrd1'}; } |
| $realnamecheck = |
| else { $regpass = encode_password($member{'passwrd1'}); } |
| $matchcase eq 'checked' |
| fopen(INACT, ">>$memberdir/memberlist.inactive", 1); |
| ? $member{'regrealname'} |
| print INACT "$date|$activationcode|$reguser|$regpass|$member{'email'}|$user_ip\n"; |
| : lc $member{'regrealname'}; |
| fclose(INACT); |
| |
| fopen(REGLOG, ">>$vardir/registration.log", 1); |
| foreach my $reserved (@reserve) { |
| print REGLOG "$date|N|$member{'regusername'}||$user_ip\n"; |
| chomp $reserved; |
| fclose(REGLOG); |
| $reservecheck = $matchcase ? $reserved : lc $reserved; |
| |
| if ($matchuser) { |
| ## send an e-mail to the user that registration is pending e-mail validation within the given timespan. ## |
| if ($matchword) { |
| my $templanguage = $language; |
| if ( $namecheck eq $reservecheck ) { |
| $language = $member{'language'}; |
| fatal_error( 'id_reserved', "$reserved" ); |
| &LoadLanguage('Email'); |
| } |
| &sendmail(${$uid.$reguser}{'email'}, "$mailreg_txt{'apr_result_activate'} $mbname", &template_email($preregemail, {'displayname' => $member{'regrealname'}, 'username' => $reguser, 'cryptusername' => $cryptuser, 'password' => $member{'passwrd1'}, 'activationcode' => $activationcode, 'preregspan' => $preregspan}),'',$emailcharset); |
| } |
| $language = $templanguage; |
| else { |
| $yymain .= qq~ |
| if ( $namecheck =~ $reservecheck ) { |
| <div class="bordercolor" style="width: 650px; margin-bottom: 8px; margin-left: auto; margin-right: auto;"> |
| fatal_error( 'id_reserved', "$reserved" ); |
| <div class="bordercolor" style="width: 650px; margin-bottom: 8px; margin-left: auto; margin-right: auto;"> |
| } |
| <table cellpadding="4" cellspacing="1" border="0" width="100%" align="center"> |
| } |
| <tr><td class="titlebg"><img src="$imagesdir/register.gif" alt="$prereg_txt{'1a'}" title="$prereg_txt{'1a'}" border="0" /><b>$prereg_txt{'1a'}</b></td></tr> |
| } |
| <tr><td class="windowbg" align="left">$prereg_txt{'1'}</td></tr> |
| if ($matchname) { |
| </table> |
| if ($matchword) { |
| </div> |
| if ( $realnamecheck eq $reservecheck ) { |
| </div>~; |
| fatal_error( 'name_reserved', "$reserved" ); |
| $yytitle = "$prereg_txt{'1a'}"; |
| } |
| |
| } |
| } else { |
| else { |
| if ($extendedprofiles) { |
| if ( $realnamecheck =~ $reservecheck ) { |
| require "$sourcedir/ExtendedProfiles.pl"; |
| fatal_error( 'name_reserved', "$reserved" ); |
| my $error = &ext_validate_submition($reguser,$reguser); |
| } |
| if ($error ne "") { &fatal_error("extended_profiles_validation",$error); } |
| } |
| &ext_saveprofile($reguser); |
| } |
| } |
| } |
| &UserAccount($reguser, "register"); |
| |
| &MemberIndex("add", $reguser); |
| if ($default_template) { $new_template = $default_template; } |
| &FormatUserName($reguser); |
| else { $new_template = q~Forum default~; } |
| |
| |
| if ($send_welcomeim == 1) { |
| # check if user isn't already registered |
| # new format msg file: |
| if ( -e ("$memberdir/$member{'regusername'}.vars") ) { |
| # messageid|(from)user|(touser(s))|(ccuser(s))|(bccuser(s))|subject|date|message|(parentmid)|reply#|ip|messagestatus|flags|storefolder|attachment |
| fatal_error('id_taken'); |
| $messageid = $^T . $$; |
| } |
| fopen(IM, ">$memberdir/$member{'regusername'}.msg", 1); |
| |
| print IM "$messageid|$sendname|$member{'regusername'}|||$imsubject|$date|$imtext|$messageid|0|$ENV{'REMOTE_ADDR'}|s|u||\n"; |
| # check if user isn't already in pre-registration |
| fclose(IM); |
| if ( -e ("$memberdir/$member{'regusername'}.pre") ) { |
| } |
| fatal_error('already_preregged'); |
| if ($new_member_notification) { |
| } |
| my $templanguage = $language; |
| if ( -e ("$memberdir/$member{'regusername'}.wait") ) { |
| $language = $lang; |
| fatal_error('already_preregged'); |
| &LoadLanguage('Email'); |
| } |
| &sendmail($new_member_notification_mail, $mailreg_txt{'new_member_info'}, &template_email($newmemberemail, {'displayname' => $member{'regrealname'}, 'username' => $reguser, 'userip' => $user_ip, 'useremail' => ${$uid.$reguser}{'email'}}),'',$emailcharset); |
| |
| $language = $templanguage; |
| if ( $new_template !~ m{\A[0-9a-zA-Z\_\(\)\ \#\%\-\:\+\?\$\&\~\.\,\@]+\Z}xsm |
| } |
| && $new_template ne q{} ) |
| |
| { |
| if ($emailpassword) { |
| fatal_error('invalid_template'); |
| my $templanguage = $language; |
| } |
| $language = $member{'language'}; |
| if ( $member{'language'} !~ |
| &LoadLanguage('Email'); |
| m{\A[0-9a-zA-Z\_\(\)\ \#\%\-\:\+\?\$\&\~\.\,\@]+\Z}xsm |
| &sendmail(${$uid.$reguser}{'email'}, "$mailreg_txt{'apr_result_info'} $mbname", &template_email($passwordregemail, {'displayname' => $member{'regrealname'}, 'username' => $reguser, 'password' => $member{'passwrd1'}}),'',$emailcharset); |
| && $member{'language'} ne q{} ) |
| $language = $templanguage; |
| { |
| $yymain .= qq~ |
| fatal_error('invalid_language'); |
| <div class="bordercolor" style="width: 650px; margin-bottom: 8px; margin-left: auto; margin-right: auto;"> |
| } |
| <table cellpadding="4" cellspacing="1" border="0" width="100%" align="center"> |
| |
| <tr><td class="titlebg"><b>$register_txt{'97'}</b></td></tr> |
| ToHTML( $member{'language'} ); |
| <tr><td class="windowbg" align="left">$register_txt{'703'}</td></tr> |
| |
| <tr><td class="windowbg2" align="left">$register_txt{'704'}</td></tr> |
| $reguser = $member{'regusername'}; |
| </table> |
| $registerdate = timetostring($date); |
| </div>~; |
| $language = $member{'language'}; |
| } else { |
| |
| if ($emailwelcome) { |
| ToHTML( $member{'regrealname'} ); |
| my $templanguage = $language; |
| |
| $language = $member{'language'}; |
| if ($birthday_on_reg) { |
| &LoadLanguage('Email'); |
| $member{'birth_month'} =~ s/\D//gxsm; |
| &sendmail(${$uid.$reguser}{'email'}, "$mailreg_txt{'apr_result_info'} $mbname", &template_email($welcomeregemail, {'displayname' => $member{'regrealname'}, 'username' => $reguser, 'password' => $member{'passwrd1'}}),'',$emailcharset); |
| $member{'birth_day'} =~ s/\D//gxsm; |
| $language = $templanguage; |
| $member{'birth_year'} =~ s/\D//gxsm; |
| } |
| if ( $birthday_on_reg == 1 ) { |
| $yymain .= qq~ |
| if ( length( $member{'birth_month'} ) < 2 |
| <br /><br /> |
| || $member{'birth_month'} < 1 |
| <form action="$scripturl?action=login2" method="post"> |
| || $member{'birth_month'} > 12 ) |
| <table border="0" width="300" cellspacing="1" class="bordercolor" align="center"> |
| { |
| <tr> |
| $member{'birth_month'} = q{}; |
| <td class="titlebg"> |
| } |
| <img src="$imagesdir/register.gif" alt="$register_txt{'97'}" title="$register_txt{'97'}" border="0" /> <span class="text1"><b>$register_txt{'97'}</b></span></td> |
| if ( length( $member{'birth_day'} ) < 2 |
| </tr><tr> |
| || $member{'birth_day'} < 1 |
| <td class="windowbg" align="center"> |
| || $member{'birth_day'} > 31 ) |
| <br />$register_txt{'431'}<br /><br /> |
| { |
| <input type="hidden" name="username" value="$member{'regusername'}" /> |
| $member{'birth_day'} = q{}; |
| <input type="hidden" name="passwrd" value="$member{'passwrd1'}" /> |
| } |
| <input type="hidden" name="cookielength" value="$Cookie_Length" /> |
| if ( length( $member{'birth_year'} ) < 4 |
| <input type="submit" value="$register_txt{'34'}" class="button" /> |
| || $member{'birth_year'} < ( $year - 120 ) |
| </td> |
| || $member{'birth_year'} > $year ) |
| </tr> |
| { |
| </table> |
| $member{'birth_year'} = q{}; |
| </form> |
| } |
| <br /><br /> |
| if ( $member{'birth_day'} |
| ~; |
| && $member{'birth_month'} |
| } |
| && $member{'birth_year'} ) |
| $yytitle = "$register_txt{'245'}"; |
| { |
| } |
| ${ $uid . $reguser }{'bday'} = |
| &template; |
| "$member{'birth_month'}/$member{'birth_day'}/$member{'birth_year'}"; |
| |
| } |
| |
| } |
| |
| elsif ( $birthday_on_reg == 2 ) { |
| |
| if ( length( $member{'birth_month'} ) < 2 |
| |
| || $member{'birth_month'} < 1 |
| |
| || $member{'birth_month'} > 12 ) |
| |
| { |
| |
| fatal_error( q{}, $register_txt{'error_birth_month'} ); |
| |
| } |
| |
| if ( length( $member{'birth_day'} ) < 2 |
| |
| || $member{'birth_day'} < 1 |
| |
| || $member{'birth_day'} > 31 ) |
| |
| { |
| |
| fatal_error( q{}, $register_txt{'error_birth_day'} ); |
| |
| } |
| |
| if ( length( $member{'birth_year'} ) < 4 ) { |
| |
| fatal_error( q{}, $register_txt{'error_birth_year'} ); |
| |
| } |
| |
| if ( $member{'birth_year'} < ( $year - 120 ) |
| |
| || $member{'birth_year'} > $year ) |
| |
| { |
| |
| fatal_error( q{}, $register_txt{'error_birth_year_real'} ); |
| |
| } |
| |
| ${ $uid . $reguser }{'bday'} = |
| |
| "$member{'birth_month'}/$member{'birth_day'}/$member{'birth_year'}"; |
| |
| } |
| |
| } |
| |
| if ($gender_on_reg) { |
| |
| ${ $uid . $reguser }{'gender'} = $member{'gender'}; |
| |
| if ( $editGenderLimit && ${ $uid . $reguser }{'gender'} ne q{} ) { |
| |
| ${ $uid . $reguser }{'disablegender'} = 1; |
| |
| } |
| |
| } |
| |
| if ( $birthday_on_reg |
| |
| && $editAgeLimit |
| |
| && ${ $uid . $reguser }{'bday'} ne q{} ) |
| |
| { |
| |
| ${ $uid . $reguser }{'disableage'} = 1; |
| |
| } |
| |
| |
| |
| ${ $uid . $reguser }{'password'} = encode_password( $member{'passwrd1'} ); |
| |
| ${ $uid . $reguser }{'realname'} = $member{'regrealname'}; |
| |
| ${ $uid . $reguser }{'email'} = lc $member{'email'}; |
| |
| ${ $uid . $reguser }{'postcount'} = 0; |
| |
| ${ $uid . $reguser }{'regreason'} = $member{'reason'}; |
| |
| ${ $uid . $reguser }{'usertext'} = $defaultusertxt; |
| |
| ${ $uid . $reguser }{'userpic'} = $my_blank_avatar; |
| |
| ${ $uid . $reguser }{'regdate'} = $registerdate; |
| |
| ${ $uid . $reguser }{'regtime'} = $date; |
| |
| ${ $uid . $reguser }{'timeselect'} = $timeselected; |
| |
| ${ $uid . $reguser }{'lastips'} = $user_ip; |
| |
| ${ $uid . $reguser }{'hidemail'} = $member{'hideemail'} ? 1 : 0; |
| |
| ${ $uid . $reguser }{'timeformat'} = q~MM D+ YYYY @ HH:mm:ss*~; |
| |
| ${ $uid . $reguser }{'template'} = $new_template; |
| |
| ${ $uid . $reguser }{'language'} = $language; |
| |
| ${ $uid . $reguser }{'pageindex'} = q~1|1|1|1~; |
| |
| |
| |
| if ( ( $addmemgroup_enabled == 1 || $addmemgroup_enabled == 3 ) |
| |
| && $member{'joinmemgroup'} ne q{} ) |
| |
| { |
| |
| my @newmemgr; |
| |
| foreach ( split /, /sm, $member{'joinmemgroup'} ) { |
| |
| if ( $NoPost{$_} && ( split /\|/xsm, $NoPost{$_} )[10] == 1 ) { |
| |
| push @newmemgr, $_; |
| |
| } |
| |
| } |
| |
| ${ $uid . $reguser }{'addgroups'} = join q{,}, @newmemgr; |
| |
| } |
| |
| |
| |
| if ( $regtype == 1 || $regtype == 2 ) { |
| |
| my ( @reglist, @x ); |
| |
| |
| |
| # If a pre-registration list exists load it |
| |
| if ( -e "$memberdir/memberlist.inactive" ) { |
| |
| fopen( INACT, "$memberdir/memberlist.inactive" ); |
| |
| @reglist = <INACT>; |
| |
| fclose(INACT); |
| |
| } |
| |
| |
| |
| # If a approve-registration list exists load it too |
| |
| if ( -e "$memberdir/memberlist.approve" ) { |
| |
| fopen( APPROVE, "$memberdir/memberlist.approve" ); |
| |
| push @reglist, <APPROVE>; |
| |
| fclose(APPROVE); |
| |
| } |
| |
| foreach (@reglist) { |
| |
| @x = split /\|/xsm, $_; |
| |
| if ( $reguser eq $x[2] ) { fatal_error('already_preregged'); } |
| |
| if ( lc $member{'email'} eq lc $x[4] ) { |
| |
| fatal_error('email_already_preregged'); |
| |
| } |
| |
| } |
| |
| |
| |
| # create pre-registration .pre file and write log and inactive list |
| |
| require Sources::Decoder; |
| |
| validation_code(); |
| |
| $activationcode = substr $sessionid, 0, 20; |
| |
| |
| |
| if ($extendedprofiles) { |
| |
| require Sources::ExtendedProfiles; |
| |
| my $error = ext_validate_submition( $reguser, $reguser ); |
| |
| if ( $error ne q{} ) { |
| |
| fatal_error( 'extended_profiles_validation', $error ); |
| |
| } |
| |
| ext_saveprofile($reguser); |
| |
| } |
| |
| |
| |
| UserAccount( $reguser, 'preregister' ); |
| |
| if ($do_scramble_id) { $cryptuser = cloak($reguser); } |
| |
| else { $cryptuser = $reguser; } |
| |
| |
| |
| $regpass = $member{'passwrd1'}; |
| |
| |
| |
| fopen( INACT, ">>$memberdir/memberlist.inactive", 1 ); |
| |
| print {INACT} |
| |
| "$date|$activationcode|$reguser|$regpass|$member{'email'}|$user_ip\n" |
| |
| or croak "$croak{'print'} INACT"; |
| |
| fclose(INACT); |
| |
| fopen( REGLOG, ">>$vardir/registration.log", 1 ); |
| |
| print {REGLOG} "$date|N|$member{'regusername'}||$user_ip\n" |
| |
| or croak "$croak{'print'} REGLOG"; |
| |
| fclose(REGLOG); |
| |
| |
| |
| ## send an e-mail to the user that registration is pending e-mail validation within the given timespan. ## |
| |
| my $templanguage = $language; |
| |
| $language = $member{'language'}; |
| |
| LoadLanguage('Email'); |
| |
| sendmail( |
| |
| ${ $uid . $reguser }{'email'}, |
| |
| "$mailreg_txt{'apr_result_activate'} $mbname", |
| |
| template_email( |
| |
| $preregemail, |
| |
| { |
| |
| 'displayname' => $member{'regrealname'}, |
| |
| 'username' => $reguser, |
| |
| 'cryptusername' => $cryptuser, |
| |
| 'password' => $member{'passwrd1'}, |
| |
| 'activationcode' => $activationcode, |
| |
| 'preregspan' => $preregspan |
| |
| } |
| |
| ), |
| |
| q{}, |
| |
| $emailcharset |
| |
| ); |
| |
| $language = $templanguage; |
| |
| $yymain .= $myregister_pending; |
| |
| $yytitle = "$prereg_txt{'1a'}"; |
| |
| |
| |
| } |
| |
| else { |
| |
| if ($extendedprofiles) { |
| |
| require Sources::ExtendedProfiles; |
| |
| my $error = ext_validate_submition( $reguser, $reguser ); |
| |
| if ( $error ne q{} ) { |
| |
| fatal_error( 'extended_profiles_validation', $error ); |
| |
| } |
| |
| ext_saveprofile($reguser); |
| |
| } |
| |
| UserAccount( $reguser, 'register' ); |
| |
| MemberIndex( 'add', $reguser ); |
| |
| FormatUserName($reguser); |
| |
| |
| |
| if ( $send_welcomeim == 1 ) { |
| |
| |
| |
| # new format msg file: |
| |
| # messageid|(from)user|(touser(s))|(ccuser(s))|(bccuser(s))|subject|date|message|(parentmid)|reply#|ip|messagestatus|flags|storefolder|attachment |
| |
| $messageid = $BASETIME . $PROCESS_ID; |
| |
| fopen( IM, ">$memberdir/$member{'regusername'}.msg", 1 ); |
| |
| print {IM} |
| |
| "$messageid|$sendname|$member{'regusername'}|||$imsubject|$date|$imtext|$messageid|0|$ENV{'REMOTE_ADDR'}|s|u||\n" |
| |
| or croak "$croak{'print'} IM"; |
| |
| fclose(IM); |
| |
| } |
| |
| if ($new_member_notification) { |
| |
| my $templanguage = $language; |
| |
| $language = $lang; |
| |
| LoadLanguage('Email'); |
| |
| sendmail( |
| |
| $new_member_notification_mail, |
| |
| $mailreg_txt{'new_member_info'}, |
| |
| template_email( |
| |
| $newmemberemail, |
| |
| { |
| |
| 'displayname' => $member{'regrealname'}, |
| |
| 'username' => $reguser, |
| |
| 'userip' => $user_ip, |
| |
| 'useremail' => ${ $uid . $reguser }{'email'} |
| |
| } |
| |
| ), |
| |
| q{}, |
| |
| $emailcharset |
| |
| ); |
| |
| $language = $templanguage; |
| |
| } |
| |
| |
| |
| if ($emailpassword) { |
| |
| my $templanguage = $language; |
| |
| $language = $member{'language'}; |
| |
| LoadLanguage('Email'); |
| |
| sendmail( |
| |
| ${ $uid . $reguser }{'email'}, |
| |
| "$mailreg_txt{'apr_result_info'} $mbname", |
| |
| template_email( |
| |
| $passwordregemail, |
| |
| { |
| |
| 'displayname' => $member{'regrealname'}, |
| |
| 'username' => $reguser, |
| |
| 'password' => $member{'passwrd1'} |
| |
| } |
| |
| ), |
| |
| q{}, |
| |
| $emailcharset |
| |
| ); |
| |
| $language = $templanguage; |
| |
| $yymain .= $myregister_password; |
| |
| } |
| |
| else { |
| |
| if ($emailwelcome) { |
| |
| my $templanguage = $language; |
| |
| $language = $member{'language'}; |
| |
| LoadLanguage('Email'); |
| |
| sendmail( |
| |
| ${ $uid . $reguser }{'email'}, |
| |
| "$mailreg_txt{'apr_result_info'} $mbname", |
| |
| template_email( |
| |
| $welcomeregemail, |
| |
| { |
| |
| 'displayname' => $member{'regrealname'}, |
| |
| 'username' => $reguser, |
| |
| 'password' => $member{'passwrd1'} |
| |
| } |
| |
| ), |
| |
| q{}, |
| |
| $emailcharset |
| |
| ); |
| |
| $language = $templanguage; |
| |
| } |
| |
| $yymain .= $myregister_welcome; |
| |
| $yymain =~ s/{yabb regusername}/$member{'regusername'}/sm; |
| |
| $yymain =~ s/{yabb passwrd1}/$member{'passwrd1'}/sm; |
| |
| $yymain =~ s/{yabb Cookie_Length}/$Cookie_Length/sm; |
| |
| } |
| |
| $yytitle = "$register_txt{'245'}"; |
| |
| } |
| |
| template(); |
| |
| return; |
| } |
| } |
| |
| |
| sub user_activation { |
| sub user_activation { |
| $changed = 0; |
| my ( $reguse, $active ) = @_; |
| $reguser = $_[0] || $INFO{'username'}; |
| $changed = 0; |
| $activationkey = $_[1] || $INFO{'activationkey'}; |
| $reguser = $reguse || $INFO{'username'}; |
| &fatal_error('wrong_id') unless $reguser; |
| $activationkey = $active || $INFO{'activationkey'}; |
| if ($do_scramble_id) { $reguser = &decloak($reguser); } |
| if ( !$reguser ) { fatal_error('wrong_id'); } |
| if (!-e "$memberdir/$reguser.pre" && -e "$memberdir/$reguser.vars") { &fatal_error("already_activated"); } |
| if ($do_scramble_id) { $reguser = decloak($reguser); } |
| if (!-e "$memberdir/$reguser.pre") { &fatal_error("prereg_expired"); } |
| if ( !-e "$memberdir/$reguser.pre" && -e "$memberdir/$reguser.vars" ) { |
| # If a pre-registration list exists load it |
| fatal_error('already_activated'); |
| if (-e "$memberdir/memberlist.inactive") { |
| } |
| fopen(INACT, "$memberdir/memberlist.inactive"); |
| if ( ( $regtype != 1 && !-e "$memberdir/$reguser.pre" ) || ( $regtype == 1 && !-e "$memberdir/$reguser.pre" && !-e "$memberdir/$reguser.wait" ) ) { fatal_error('prereg_expired'); } |
| @reglist = <INACT>; |
| elsif ( $regtype == 1 && -e "$memberdir/$reguser.wait" ) { fatal_error('prereg_wait'); } |
| fclose(INACT); |
| # If a pre-registration list exists load it |
| } else { |
| if ( -e "$memberdir/memberlist.inactive" ) { |
| # add entry to registration log |
| fopen( INACT, "$memberdir/memberlist.inactive" ); |
| fopen(REGLOG, ">>$vardir/registration.log", 1); |
| @reglist = <INACT>; |
| print REGLOG "$date|E|$reguser||$user_ip\n"; |
| fclose(INACT); |
| fclose(REGLOG); |
| } |
| &fatal_error("prereg_expired"); |
| else { |
| } |
| |
| if ($regtype == 1 && -e "$memberdir/memberlist.approve") { |
| # add entry to registration log |
| fopen(APR, "$memberdir/memberlist.approve"); |
| fopen( REGLOG, ">>$vardir/registration.log", 1 ); |
| @aprlist = <APR>; |
| print {REGLOG} "$date|E|$reguser||$user_ip\n" |
| fclose(APR); |
| or croak "$croak{'print'} REGLOG"; |
| } |
| fclose(REGLOG); |
| |
| fatal_error('prereg_expired'); |
| # check if user is in pre-registration and check activation key |
| } |
| foreach (@reglist) { |
| if ( $regtype == 1 && -e "$memberdir/memberlist.approve" ) { |
| ($regtime, $testkey, $regmember, $regpassword, undef) = split(/\|/, $_, 5); |
| fopen( APR, "$memberdir/memberlist.approve" ); |
| |
| @aprlist = <APR>; |
| if ($regmember ne $reguser) { |
| fclose(APR); |
| push(@chnglist, $_); # update non activate user list |
| } |
| } else { |
| |
| my $templanguage = $language; |
| # check if user is in pre-registration and check activation key |
| if ($activationkey ne $testkey) { |
| foreach (@reglist) { |
| fopen(REGLOG, ">>$vardir/registration.log", 1); |
| ( $regtime, $testkey, $regmember, $regpassword, undef ) = |
| print REGLOG "$date|E|$reguser||$user_ip\n"; # add entry to registration log |
| split /\|/xsm, $_, 5; |
| fclose(REGLOG); |
| |
| &fatal_error("wrong_code"); |
| if ( $regmember ne $reguser ) { |
| |
| push @chnglist, $_; # update non activate user list |
| } elsif ($regtype == 1) { |
| } |
| # user is in list and the keys match, so move him/her for admin approval |
| else { |
| unshift(@aprlist, $_); |
| my $templanguage = $language; |
| |
| if ( $activationkey ne $testkey ) { |
| rename("$memberdir/$reguser.pre", "$memberdir/$reguser.wait"); |
| fopen( REGLOG, ">>$vardir/registration.log", 1 ); |
| |
| print {REGLOG} "$date|E|$reguser||$user_ip\n" |
| # add entry to registration log |
| or croak "$croak{'print'} REGLOG"; |
| if ($iamadmin || $iamgmod) { $actuser = $username; } else { $actuser = $reguser; } |
| |
| fopen(REGLOG, ">>$vardir/registration.log", 1); |
| # add entry to registration log |
| print REGLOG "$date|W|$reguser|$actuser|$user_ip\n"; |
| fclose(REGLOG); |
| fclose(REGLOG); |
| fatal_error('wrong_code'); |
| |
| |
| &LoadUser($reguser); |
| } |
| $language = ${$uid.$reguser}{'language'}; |
| elsif ( $regtype == 1 ) { |
| &LoadLanguage('Email'); |
| |
| &sendmail(${$uid.$reguser}{'email'}, "$mailreg_txt{'apr_result_wait'} $mbname", &template_email($approveregemail, {'username' => $reguser, 'displayname' => ${$uid.$reguser}{'realname'}}),'',$emailcharset); |
| # user is in list and the keys match, so move him/her for admin approval |
| |
| unshift @aprlist, $_; |
| } elsif ($regtype == 2) { |
| |
| &LoadUser($reguser); |
| rename "$memberdir/$reguser.pre", "$memberdir/$reguser.wait"; |
| # ckeck if email is allready in active use |
| |
| if (lc ${$uid.$reguser}{'email'} eq lc &MemberIndex("check_exist", ${$uid.$reguser}{'email'})) { |
| # add entry to registration log |
| &fatal_error("email_taken", "(${$uid.$reguser}{'email'})"); |
| if ( $iamadmin || $iamgmod ) { $actuser = $username; } |
| } |
| else { $actuser = $reguser; } |
| |
| fopen( REGLOG, ">>$vardir/registration.log", 1 ); |
| # user is in list and the keys match, so let him/her in |
| print {REGLOG} "$date|W|$reguser|$actuser|$user_ip\n" |
| rename("$memberdir/$reguser.pre", "$memberdir/$reguser.vars"); |
| or croak "$croak{'print'} REGLOG"; |
| &MemberIndex("add", $reguser); |
| fclose(REGLOG); |
| |
| |
| if ($iamadmin || $iamgmod) { $actuser = $username; } else { $actuser = $reguser; } |
| LoadUser($reguser); |
| # add entry to registration log |
| $language = ${ $uid . $reguser }{'language'}; |
| fopen(REGLOG, ">>$vardir/registration.log", 1); |
| LoadLanguage('Email'); |
| print REGLOG "$date|A|$reguser|$actuser|$user_ip\n"; |
| sendmail( |
| fclose(REGLOG); |
| ${ $uid . $reguser }{'email'}, |
| |
| "$mailreg_txt{'apr_result_wait'} $mbname", |
| if ($emailpassword) { |
| template_email( |
| chomp $regpassword; |
| $approveregemail, |
| $language = ${$uid.$reguser}{'language'}; |
| { |
| &LoadLanguage('Email'); |
| 'username' => $reguser, |
| &sendmail(${$uid.$reguser}{'email'}, "$mailreg_txt{'apr_result_validate'} $mbname", &template_email($activatedpassregemail, {'displayname' => ${$uid.$reguser}{'realname'}, 'username' => $reguser, 'password' => $regpassword}),'',$emailcharset); |
| 'displayname' => ${ $uid . $reguser }{'realname'} |
| $yymain .= qq~<br /><table border="0" width="100%" cellspacing="1" class="bordercolor" align="center">~; |
| } |
| $sharedLogin_title = $register_txt{'97'}; |
| ), |
| $sharedLogin_text = $register_txt{'703'}; |
| q{}, |
| $yymain .= qq~</table>~; |
| $emailcharset |
| |
| ); |
| } elsif ($emailwelcome) { |
| |
| chomp $regpassword; |
| } |
| $language = ${$uid.$reguser}{'language'}; |
| elsif ( $regtype == 2 ) { |
| &LoadLanguage('Email'); |
| LoadUser($reguser); |
| &sendmail(${$uid.$reguser}{'email'}, "$mailreg_txt{'apr_result_validate'} $mbname", &template_email($activatedwelcomeregemail, {'displayname' => ${$uid.$reguser}{'realname'}, 'username' => $reguser, 'password' => $regpassword}),'',$emailcharset); |
| |
| } |
| # check if email is already in active use |
| } |
| if ( |
| |
| lc ${ $uid . $reguser }{'email'} eq |
| if ($send_welcomeim == 1) { |
| lc MemberIndex( 'check_exist', |
| # new format msg file: |
| ${ $uid . $reguser }{'email'}, 2 ) ) |
| # messageid|(from)user|(touser(s))|(ccuser(s))|(bccuser(s))|subject|date|message|(parentmid)|reply#|ip|messagestatus|flags|storefolder|attachment |
| { |
| $messageid = $^T . $$; |
| fatal_error( 'email_taken', "(${$uid.$reguser}{'email'})" ); |
| fopen(INBOX, ">$memberdir/$reguser.msg"); |
| } |
| print INBOX "$messageid|$sendname|$reguser|||$imsubject|$date|$imtext|$messageid|0|$ENV{'REMOTE_ADDR'}|s|u||\n"; |
| |
| fclose(INBOX); |
| # user is in list and the keys match, so let him/her in |
| } |
| rename "$memberdir/$reguser.pre", "$memberdir/$reguser.vars"; |
| if ($new_member_notification) { |
| MemberIndex( 'add', $reguser ); |
| $language = $lang; |
| |
| &LoadLanguage('Email'); |
| if ( $iamadmin || $iamgmod ) { $actuser = $username; } |
| &sendmail($new_member_notification_mail, $mailreg_txt{'new_member_info'}, &template_email($newmemberemail, {'displayname' => ${$uid.$reguser}{'realname'}, 'username' => $reguser, 'userip' => $user_ip, 'useremail' => ${$uid.$reguser}{'email'}}),'',$emailcharset); |
| else { $actuser = $reguser; } |
| } |
| |
| $language = $templanguage; |
| # add entry to registration log |
| $changed = 1; |
| fopen( REGLOG, ">>$vardir/registration.log", 1 ); |
| } |
| print {REGLOG} "$date|A|$reguser|$actuser|$user_ip\n" |
| } |
| or croak "$croak{'print'} REGLOG"; |
| |
| fclose(REGLOG); |
| if ($changed) { |
| |
| # if changed write new inactive list |
| if ($emailpassword) { |
| fopen(INACT, ">$memberdir/memberlist.inactive"); |
| chomp $regpassword; |
| print INACT @chnglist; |
| $language = ${ $uid . $reguser }{'language'}; |
| fclose(INACT); |
| LoadLanguage('Email'); |
| # update approval user list |
| sendmail( |
| if ($regtype == 1) { |
| ${ $uid . $reguser }{'email'}, |
| fopen(APR, ">$memberdir/memberlist.approve"); |
| "$mailreg_txt{'apr_result_validate'} $mbname", |
| print APR @aprlist; |
| template_email( |
| fclose(APR); |
| $activatedpassregemail, |
| } |
| { |
| } else { |
| 'displayname' => |
| # add entry to registration log |
| ${ $uid . $reguser }{'realname'}, |
| fopen(REGLOG, ">>$vardir/registration.log", 1); |
| 'username' => $reguser, |
| print REGLOG "$date|E|$reguser|$user_ip\n"; |
| 'password' => $regpassword |
| fclose(REGLOG); |
| } |
| &fatal_error("wrong_id"); |
| ), |
| } |
| q{}, |
| |
| $emailcharset |
| if ($regtype == 1) { |
| ); |
| $yymain .= qq~ |
| $yymain .= $myregister_table_a; |
| <div class="bordercolor" style="width: 650px; margin-bottom: 8px; margin-left: auto; margin-right: auto;"> |
| $sharedLogin_title = $register_txt{'97'}; |
| <div class="bordercolor" style="width: 650px; margin-bottom: 8px; margin-left: auto; margin-right: auto;"> |
| $sharedLogin_text = $register_txt{'703'}; |
| <table cellpadding="4" cellspacing="1" border="0" width="100%" align="center"> |
| $yymain .= $myregister_table_b; |
| <tr><td class="titlebg"><img src="$imagesdir/register.gif" alt="$prereg_txt{'1a'}" title="$prereg_txt{'1a'}" border="0" /><b>$prereg_txt{'1a'}</b></td></tr> |
| |
| <tr><td class="windowbg" align="left">$prereg_txt{'13'}</td></tr> |
| } |
| </table> |
| elsif ($emailwelcome) { |
| </div> |
| chomp $regpassword; |
| </div>~; |
| $language = ${ $uid . $reguser }{'language'}; |
| $yytitle = "$prereg_txt{'1b'}"; |
| LoadLanguage('Email'); |
| |
| sendmail( |
| } elsif ($regtype == 2) { |
| ${ $uid . $reguser }{'email'}, |
| $yymain .= qq~ |
| "$mailreg_txt{'apr_result_validate'} $mbname", |
| <br /><br /> |
| template_email( |
| <table border="0" width="650" cellspacing="1" class="bordercolor" align="center"> |
| $activatedwelcomeregemail, |
| <tr> |
| { |
| <td colspan="2" class="titlebg"> |
| 'displayname' => |
| <img src="$imagesdir/register.gif" alt="$prereg_txt{'1a'}" title="$prereg_txt{'1a'}" border="0" /> <span class="text1"><b>$prereg_txt{'1a'}</b></span></td> |
| ${ $uid . $reguser }{'realname'}, |
| </tr><tr> |
| 'username' => $reguser, |
| <td colspan="2" class="windowbg" align="center"> |
| 'password' => $regpassword |
| <br />$prereg_txt{'5'}~; |
| } |
| $yymain .= $prereg_txt{'5a'} unless $emailpassword; |
| ), |
| $yymain .= qq~$prereg_txt{'5b'}<br /><br />~; |
| q{}, |
| if ($emailpassword) { |
| $emailcharset |
| $yymain .= qq~$register_txt{'703'}<br /> <br />~; |
| ); |
| } |
| } |
| $yymain .= qq~ |
| } |
| </td> |
| |
| </tr> |
| if ( $send_welcomeim == 1 ) { |
| </table> |
| |
| ~; |
| # new format msg file: |
| |
| # messageid|(from)user|(touser(s))|(ccuser(s))|(bccuser(s))|subject|date|message|(parentmid)|reply#|ip|messagestatus|flags|storefolder|attachment |
| if (!$iamadmin && !$iamgmod) { |
| $messageid = $BASETIME . $PROCESS_ID; |
| unless ($emailpassword) { |
| fopen( INBOX, ">$memberdir/$reguser.msg" ); |
| $yymain .= qq~<div class="bordercolor" style="width: 650px; margin-bottom: 8px; margin-left: auto; margin-right: auto;">~; |
| print {INBOX} |
| require "$sourcedir/LogInOut.pl"; |
| "$messageid|$sendname|$reguser|||$imsubject|$date|$imtext|$messageid|0|$ENV{'REMOTE_ADDR'}|s|u||\n" |
| $yymain .= &sharedLogin; |
| or croak "$croak{'print'} INBOX"; |
| $yymain .= qq~</div>~; |
| fclose(INBOX); |
| } else { |
| } |
| $yymain .= qq~<br /><br />~; |
| if ($new_member_notification) { |
| } |
| $language = $lang; |
| } |
| LoadLanguage('Email'); |
| $yytitle = "$prereg_txt{'5'}"; |
| sendmail( |
| } |
| $new_member_notification_mail, |
| |
| $mailreg_txt{'new_member_info'}, |
| if ($iamadmin || $iamgmod) { |
| template_email( |
| $yySetLocation = qq~$adminurl?action=view_reglog~; |
| $newmemberemail, |
| &redirectexit; |
| { |
| } else { |
| 'displayname' => ${ $uid . $reguser }{'realname'}, |
| &template; |
| 'username' => $reguser, |
| } |
| 'userip' => $user_ip, |
| |
| 'useremail' => ${ $uid . $reguser }{'email'} |
| |
| } |
| |
| ), |
| |
| q{}, |
| |
| $emailcharset |
| |
| ); |
| |
| } |
| |
| $language = $templanguage; |
| |
| $changed = 1; |
| |
| } |
| |
| } |
| |
| |
| |
| if ($changed) { |
| |
| |
| |
| # if changed write new inactive list |
| |
| fopen( INACT, ">$memberdir/memberlist.inactive" ); |
| |
| print {INACT} @chnglist or croak "$croak{'print'} INACT"; |
| |
| fclose(INACT); |
| |
| |
| |
| # update approval user list |
| |
| if ( $regtype == 1 ) { |
| |
| fopen( APR, ">$memberdir/memberlist.approve" ); |
| |
| print {APR} @aprlist or croak "$croak{'print'} APR"; |
| |
| fclose(APR); |
| |
| } |
| |
| } |
| |
| else { |
| |
| |
| |
| # add entry to registration log |
| |
| fopen( REGLOG, ">>$vardir/registration.log", 1 ); |
| |
| print {REGLOG} "$date|E|$reguser|$user_ip\n" |
| |
| or croak "$croak{'print'} REGLOG"; |
| |
| fclose(REGLOG); |
| |
| fatal_error('wrong_id'); |
| |
| } |
| |
| |
| |
| if ( $regtype == 1 ) { |
| |
| $yymain .= $myregister_prereg1; |
| |
| $yytitle = "$prereg_txt{'1b'}"; |
| |
| |
| |
| } |
| |
| elsif ( $regtype == 2 ) { |
| |
| $yymain .= $myregister_prereg2; |
| |
| if ( !$emailpassword ) { $yymain .= $prereg_txt{'5a'}; } |
| |
| $yymain .= qq~$prereg_txt{'5b'}<br /><br />~; |
| |
| if ($emailpassword) { |
| |
| $yymain .= qq~$register_txt{'703'}<br /> <br />~; |
| |
| } |
| |
| $yymain .= $myregister_enddiv; |
| |
| |
| |
| if ( !$iamadmin && !$iamgmod ) { |
| |
| if ( !$emailpassword ) { |
| |
| $yymain .= $myregister_div_a; |
| |
| require Sources::LogInOut; |
| |
| $yymain .= sharedLogin(); |
| |
| $yymain .= $myregister_div_b; |
| |
| } |
| |
| else { |
| |
| $yymain .= q~<br /><br />~; |
| |
| } |
| |
| } |
| |
| $yytitle = "$prereg_txt{'5'}"; |
| |
| } |
| |
| |
| |
| if ( $iamadmin || $iamgmod ) { |
| |
| $yySetLocation = qq~$adminurl?action=view_reglog~; |
| |
| redirectexit(); |
| |
| } |
| |
| else { |
| |
| template(); |
| |
| } |
| |
| return; |
| } |
| } |
| |
| |
| 1; |
| 1; |
| |
| |