array( 'activate_requestemail' ), 'none' => array( 'activateform' ) ); // ######################### REQUIRE BACK-END ############################ require_once('./global.php'); require_once('./includes/functions_user.php'); require_once('./includes/functions_misc.php'); require_once('./includes/functions_register.php'); // ####################################################################### // ######################## START MAIN SCRIPT ############################ // ####################################################################### if (empty($_REQUEST['do']) AND empty($_REQUEST['a'])) { $_REQUEST['do'] = 'signup'; } if ($url == REFERRER) { $url = urlencode($url); } // ############################### start checkdate ############################### if ($_REQUEST['do'] == 'checkdate') { // check their birthdate globalize($_REQUEST, array('month' => INT, 'year' => INT, 'day' => INT)); $current['year'] = date('Y'); $current['month'] = date('m'); /////invite hack 1.0 by swalif for vb 3.0.5 if ($vboptions['refsystem'] and $vboptions['allowregistration'] ) { $refurl = $_REQUEST['refurl'] ; if (!$refurl) { eval(print_standard_error('error_regwithinvitonly')); } if (!getuserref_id($_REQUEST['refurl'])) { eval(print_standard_error('error_inviterefused')); } if (checkrefeer(getuserref_id($_REQUEST['refurl']))) { eval(print_standard_error('error_inviterefused')); } } /////invite hack 1.0 by swalif for vb 3.0.5 if ($month == 0 OR !preg_match('#^\d{4}$#', $year)) { eval(print_standard_error('select_valid_month_and_year')); } if ($year < ($current['year'] - 13) OR ($year == ($current['year'] - 13) AND $month <= $current['month'])) { // just regular adult registration /////invite hack 1.0 by swalif for vb 3.0.5 exec_header_redirect("register.php?$session[sessionurl]do=signup&who=adult&url=$url" . iif($month, "&month=$month") . iif($year, "&year=$year") . iif($day, "&day=$day"). iif($refurl, "&refurl=$refurl")); /////invite hack 1.0 by swalif for vb 3.0.5 } else { if ($vboptions['usecoppa'] == 2) { // turn away as they're under 13 eval(print_standard_error('error_under_thirteen_registration_denied')); } else { // use the coppa registration /////invite hack 1.0 by swalif for vb 3.0.5 exec_header_redirect("register.php?$session[sessionurl]do=signup&who=coppa&url=$url" . iif($month, "&month=$month") . iif($year, "&year=$year") . iif($day, "&day=$day") . iif($refurl, "&refurl=$refurl")); /////invite hack 1.0 by swalif for vb 3.0.5 } } exit; } // ############################### start signup ############################### if ($_REQUEST['do'] == 'signup') { globalize($_REQUEST, array( 'month' => INT, 'day' => INT, 'year' => INT )); /////invite hack 1.0 by swalif for vb 3.0.5 if ($vboptions['refsystem'] and $vboptions['allowregistration'] ) { $refurl = $_REQUEST['refurl'] ; if (!$refurl) { eval(print_standard_error('error_regwithinvitonly')); } if (!getuserref_id($_REQUEST['refurl'])) { eval(print_standard_error('error_inviterefused')); } if (checkrefeer(getuserref_id($_REQUEST['refurl']))) { eval(print_standard_error('error_inviterefused')); } } /////invite hack 1.0 by swalif for vb 3.0.5 if (!$vboptions['allowregistration']) { eval(print_standard_error('error_noregister')); } if ($bbuserinfo['userid'] != 0 AND !$vboptions['allowmultiregs']) { eval(print_standard_error('error_alreadyregistered')); } if (!$vboptions['usecoppa']) { // don't use COPPA - assume adult $who = 'adult'; } else { $who = trim($_REQUEST['who']); } if ($who == 'coppa' AND $vboptions['usecoppa'] == 1) { $show['coppa'] = true; $templatename = 'register_rules'; } else if ($who == 'adult') { $show['coppa'] = false; $templatename = 'register_rules'; } else { $templatename = 'register_verify_age'; } eval('print_output("' . fetch_template($templatename) . '");'); } // ############################### start add member ############################### if ($_POST['do'] == 'addmember') { globalize($_POST, array('options')); if (!$vboptions['allowregistration']) { eval(print_standard_error('error_noregister')); } // check for multireg if ($bbuserinfo['userid'] != 0 AND !$vboptions['allowmultiregs']) { $username = $bbuserinfo['username']; eval(print_standard_error('error_alreadyregistered')); } $postusername = ''; if ($postusername) { $username = trim(preg_replace('#\s+#si', ' ', unhtmlspecialchars($postusername))); } // else it will come from a global profile or there will be no username $errors = array(); // check username does not contain semi-colons if (preg_match('/(?query_first(" SELECT username FROM " . TABLE_PREFIX . "user WHERE username IN ('" . addslashes(htmlspecialchars_uni($_POST['username'])) . "', '" . addslashes(htmlspecialchars_uni($unicode_name)) . "') ") ) { $username = htmlspecialchars_uni($_POST['username']); eval('$errors[20] = "' . fetch_phrase('usernametaken', PHRASETYPEID_ERROR) . '";'); } // check for valid email address if (!empty($_POST['email']) AND !empty($_POST['emailconfirm']) AND !is_valid_email($_POST['email'])) { eval('$errors[30] = "' . fetch_phrase('bademail', PHRASETYPEID_ERROR) . '";'); } // check for banned email address if (!empty($_POST['email']) AND is_banned_email($_POST['email'])) { eval('$errors[40] = "' . fetch_phrase('banemail', PHRASETYPEID_ERROR) . '";'); } // check for unique email address if (!empty($_POST['email']) AND $vboptions['requireuniqueemail'] AND $checkuser = $DB_site->query_first("SELECT username,email FROM " . TABLE_PREFIX . "user WHERE email='" . addslashes($_POST['email']) . "'")) { eval('$errors[50] = "' . fetch_phrase('emailtaken', PHRASETYPEID_ERROR) . '";'); } // check for missing fields if (($_POST['coppauser'] AND empty($_POST['parentemail'])) OR empty($_POST['username']) OR empty($_POST['email']) OR empty($_POST['emailconfirm']) OR (empty($_POST['password']) AND empty($_POST['password_md5'])) OR (empty($_POST['passwordconfirm']) AND empty($_POST['passwordconfirm_md5']))) { eval('$errors[60] = "' . fetch_phrase('fieldmissing', PHRASETYPEID_ERROR) . '";'); } // check for matching passwords if ($_POST['password'] != $_POST['passwordconfirm'] OR (strlen($_POST['password_md5']) == 32 AND $_POST['password_md5'] != $_POST['passwordconfirm_md5'])) { eval('$errors[70] = "' . fetch_phrase('passwordmismatch', PHRASETYPEID_ERROR) . '";'); } // check for matching email addresses if ($_POST['email'] != $_POST['emailconfirm']) { eval('$errors[80] = "' . fetch_phrase('emailmismatch', PHRASETYPEID_ERROR) . '";'); } // check for min username length if (!empty($_POST['username']) AND vbstrlen($_POST['username']) < $vboptions['minuserlength']) { eval('$errors[90] = "' . fetch_phrase('usernametooshort', PHRASETYPEID_ERROR) . '";'); } // check for max username length else if (vbstrlen($_POST['username']) > $vboptions['maxuserlength']) { eval('$errors[100] = "' . fetch_phrase('usernametoolong', PHRASETYPEID_ERROR) . '";'); } // check referrer $testreferrerid['userid'] = 0; if ($vboptions['usereferrer'] AND $bbuserinfo['userid'] == 0) { if ($_POST['referrername']) { if (!$testreferrerid = $DB_site->query_first("SELECT userid FROM " . TABLE_PREFIX . "user WHERE username = '" . addslashes(htmlspecialchars_uni($_POST['referrername'])) . "'")) { eval('$errors[130] = "' . fetch_phrase('badreferrer', PHRASETYPEID_ERROR) . '";'); } } } // Check Reg Image if ($vboptions['regimagecheck'] AND $vboptions['gdversion']) { $imagestamp = trim(str_replace(' ', '', $_POST['imagestamp'])); $ih = $DB_site->query_first("SELECT imagestamp FROM " . TABLE_PREFIX . "regimage WHERE regimagehash = '" . addslashes($_POST['imagehash']) . "'"); if (!$imagestamp OR strtoupper($imagestamp) != $ih['imagestamp']) { //eval(print_standard_error('error_register_imagecheck')); eval('$errors[140] = "' . fetch_phrase('register_imagecheck', PHRASETYPEID_ERROR) . '";'); $DB_site->query("DELETE FROM " . TABLE_PREFIX . "regimage WHERE regimagehash = '" . addslashes($_POST['imagehash']) . "'"); unset($imagestamp); unset($_POST['imagehash']); unset($_POST['imagestamp']); } } // assign user to group 3 if email needs verification if ($vboptions['verifyemail']) { $newusergroupid = 3; } else { if ($vboptions['moderatenewmembers'] OR $_POST['coppauser']) { $newusergroupid = 4; } else { $newusergroupid = 2; } } /////invite hack 1.0 by swalif for vb 3.0.5 if ($vboptions['refsystem'] and $vboptions['allowregistration'] ) { $refurl = $_POST['refurl'] ; if (!$refurl) { eval(print_standard_error('error_regwithinvitonly')); } if (!getuserref_id($refurl)) { eval(print_standard_error('error_inviterefused')); } if (checkrefeer(getuserref_id($refurl))) { eval(print_standard_error('error_inviterefused')); } $chakref_name = getuserref_id($refurl) ; $referrernames = htmlspecialchars_uni($_POST['referrername']); if ($chakref_name['username'] != $referrernames) { eval(print_standard_error('error_inviterefused')); } } /////invite hack 1.0 by swalif for vb 3.0.5 // get user title from usergroupcache $usergroup = $usergroupcache["$newusergroupid"]; if ($usergroup['usertitle'] == '') { $gettitle = $DB_site->query_first("SELECT title FROM " . TABLE_PREFIX . "usertitle WHERE minposts<=0 ORDER BY minposts DESC LIMIT 1"); $usertitle = $gettitle['title']; } else { $usertitle = $usergroup['usertitle']; } // check for censored words in username if ($_POST['username'] != fetch_censored_text($_POST['username'])) { //eval(print_standard_error('error_censorfield')); eval('$errors[150] = "' . fetch_phrase('censorfield', PHRASETYPEID_ERROR) . '";'); } // check for illegal username if (!empty($vboptions['illegalusernames'])) { $usernames = preg_split('/\s+/', $vboptions['illegalusernames'], -1, PREG_SPLIT_NO_EMPTY); foreach ($usernames AS $val) { if (strpos(strtolower($_POST['username']), strtolower($val)) !== false) { $username = &$val; eval('$errors[160] = "' . fetch_phrase('usernametaken', PHRASETYPEID_ERROR) . '";'); } } } // check extra profile fields $userfields = ''; $userfieldsnames = '(userid'; $profilefields = $DB_site->query(" SELECT maxlength, profilefieldid, required, title, size, type, data, optional, def, regex FROM " . TABLE_PREFIX . "profilefield WHERE editable > 0 ORDER BY displayorder "); while ($profilefield = $DB_site->fetch_array($profilefields)) { $havefields = 1; $varname = "field$profilefield[profilefieldid]"; $$varname = $_POST["$varname"]; $optionalvar = $varname . '_opt'; $$optionalvar = $_POST["$optionalvar"]; $bitwise = 0; if ($profilefield['type'] == 'input' OR $profilefield['type'] == 'textarea') { if ($profilefield['required']) { $$varname = substr(fetch_censored_text($$varname), 0, $profilefield['maxlength']); } else if ($profilefield['data']) { $$varname = unhtmlspecialchars($profilefield['data']); } else { continue; } } if ($profilefield['type'] == 'radio' OR $profilefield['type'] == 'select') { if ($profilefield['required']) { if ($$varname == 0) { $$varname = ''; } else { $data = unserialize($profilefield['data']); foreach ($data AS $key => $val) { $key++; if ($key == $$varname) { $$varname = trim($val); break; } } } if ($profilefield['optional'] AND $$optionalvar) { $$varname = substr(fetch_censored_text($$optionalvar), 0, $profilefield['maxlength']); } } else if ($profilefield['def']) { $data = unserialize($profilefield['data']); $$varname = unhtmlspecialchars($data[0]); } else { continue; } } if ($profilefield['type'] == 'checkbox' OR $profilefield['type'] == 'select_multiple') { if ($profilefield['required']) { if (is_array($$varname)) { foreach ($$varname AS $key => $val) { $bitwise += pow(2, $val - 1); } if (($profilefield['size'] != 0) AND (sizeof($$varname) > $profilefield['size'])) { eval('$errors[170] = "' . fetch_phrase('checkboxsize', PHRASETYPEID_ERROR) . '";'); } $$varname = $bitwise; } } else { continue; } } if ($profilefield['regex']) { if (!preg_match('#' . str_replace('#', '\#', $profilefield['regex']) . '#siU', $$varname)) { if ($$varname != '') { eval('$errors[185] = "' . fetch_phrase('regexincorrect', PHRASETYPEID_ERROR) . '";'); } } } if ($profilefield['required'] == 1 AND $$varname == '') { eval('$errors[180] = "' . fetch_phrase('requiredfieldmissing', PHRASETYPEID_ERROR) . '";'); } $userfieldsnames.= ",field$profilefield[profilefieldid]"; $userfields .= ',\'' . addslashes(htmlspecialchars_uni($$varname)) . "'"; $bbuserinfo["$varname"] = $$varname; } $userfieldsnames .= ')'; if (bitwise(REGOPTION_REQBIRTHDAY, $vboptions['defaultregoptions'])) { $day = intval($_POST['day']); $month = intval($_POST['month']); $year = intval($_POST['year']); if ($day == -1 OR $month == -1) { eval('$errors[190] = "' . fetch_phrase('birthdayfield', PHRASETYPEID_ERROR) . '";'); } else { if (($year > 1901) AND ($year < date('Y'))) { if (checkdate($month, $day, $year)) { $birthday = str_pad($month, 2, '0', STR_PAD_LEFT) . '-' . str_pad($day, 2, '0', STR_PAD_LEFT) . '-' . $year; $birthday_search = $year . '-' . str_pad($month, 2, '0', STR_PAD_LEFT) . '-' . str_pad($day, 2, '0', STR_PAD_LEFT); } else { eval('$errors[190] = "' . fetch_phrase('birthdayfield', PHRASETYPEID_ERROR) . '";'); } } else if ($year >= date('Y')) { eval('$errors[190] = "' . fetch_phrase('birthdayfield', PHRASETYPEID_ERROR) . '";'); } else { if (checkdate($month, $day, 1996)) // Allow Feb 29th if the user doesn't specify a year.. { $birthday = str_pad($month, 2, '0', STR_PAD_LEFT) . '-' . str_pad($day, 2, '0', STR_PAD_LEFT) . '-0000'; $birthday_search = '0000-' . str_pad($month, 2, '0', STR_PAD_LEFT) . '-' . str_pad($day, 2, '0', STR_PAD_LEFT); } else { eval('$errors[190] = "' . fetch_phrase('birthdayfield', PHRASETYPEID_ERROR) . '";'); } } if ($vboptions['showbirthdays']) { $todayneggmt = date('n-j', TIMENOW + (-12 - $vboptions['timeoffset']) * 3600); $todayposgmt = date('n-j', TIMENOW + (12 - $vboptions['timeoffset']) * 3600); if ($todayneggmt == $month . '-' . $day OR $todayposgmt == $month . '-' . $day) { require_once('./includes/functions_databuild.php'); build_birthdays(); } } } } else { $birthday = ''; $birthday_search = ''; } if (sizeof($errors) > 0) { $_REQUEST['do'] = 'register'; foreach ($errors AS $index => $error) { $errorlist .= "
  • $error
  • "; } if ($_POST['timezoneoffset'] < 0) { $arrayindex = 'n' . (-$_POST['timezoneoffset'] * 10); $timezonesel["$arrayindex"] = HTML_SELECTED; } else { $arrayindex = $_POST['timezoneoffset'] * 10; $timezonesel["$arrayindex"] = HTML_SELECTED; } $username = htmlspecialchars_uni($_POST['username']); $email = htmlspecialchars_uni($_POST['email']); $emailconfirm = htmlspecialchars_uni($_POST['emailconfirm']); $parentemail = htmlspecialchars_uni($_POST['parentemail']); $dstsel["$_POST[dst]"] = HTML_SELECTED; $show['errors'] = true; } else { $show['errors'] = false; // Delete the regimage so that no other processes can try to use it. if ($vboptions['regimagecheck'] AND $vboptions['gdversion']) { $DB_site->query("DELETE FROM " . TABLE_PREFIX . "regimage WHERE regimagehash = '" . addslashes($_POST['imagehash']) . "'"); } $salt = fetch_user_salt(3); if (strlen($_POST['password_md5']) == 32) { $hashedpassword = md5($_POST['password_md5'] . $salt); } else { $hashedpassword = md5(md5($_POST['password']) . $salt); } // Determine this user's reputationlevelid. $reputationlevel = $DB_site->query_first(" SELECT reputationlevelid FROM " . TABLE_PREFIX . "reputationlevel WHERE minimumreputation <= " . intval($vboptions['reputationdefault']) . " ORDER BY minimumreputation DESC LIMIT 1 "); // Set Registration Defaults $regoption = array(); if (bitwise(REGOPTION_SUBSCRIBE_NONE, $vboptions['defaultregoptions'])) { $regoption['autosubscribe'] = -1; } else if (bitwise(REGOPTION_SUBSCRIBE_NONOTIFY, $vboptions['defaultregoptions'])) { $regoption['autosubscribe'] = 0; } else if (bitwise(REGOPTION_SUBSCRIBE_INSTANT, $vboptions['defaultregoptions'])) { $regoption['autosubscribe'] = 1; } else if (bitwise(REGOPTION_SUBSCRIBE_DAILY, $vboptions['defaultregoptions'])) { $regoption['autosubscribe'] = 2; } else { $regoption['autosubscribe'] = 3; } if (bitwise(REGOPTION_VBCODE_NONE, $vboptions['defaultregoptions'])) { $regoption['showvbcode'] = 0; } else if (bitwise(REGOPTION_VBCODE_STANDARD, $vboptions['defaultregoptions'])) { $regoption['showvbcode'] = 1; } else { $regoption['showvbcode'] = 2; } if (bitwise(REGOPTION_THREAD_LINEAR_OLDEST, $vboptions['defaultregoptions'])) { $regoption['threadedmode'] = 0; $options['postorder'] = 0; } else if (bitwise(REGOPTION_THREAD_LINEAR_NEWEST, $vboptions['defaultregoptions'])) { $regoption['threadedmode'] = 0; $options['postorder'] = 1; } else if (bitwise(REGOPTION_THREAD_THREADED, $vboptions['defaultregoptions'])) { $regoption['threadedmode'] = 1; $options['postorder'] = 0; } else if (bitwise(REGOPTION_THREAD_HYBRID, $vboptions['defaultregoptions'])) { $regoption['threadedmode'] = 2; $options['postorder'] = 0; } else { $regoption['threadedmode'] = 0; $options['postorder'] = 0; } $regoption['pmpopup'] = bitwise(REGOPTION_PMPOPUP, $vboptions['defaultregoptions']); $regoptions = array(); // check coppa things if ($_POST['coppauser']) { $username = $_POST['username']; $password = $_POST['password']; eval(fetch_email_phrases('parentcoppa')); vbmail($_POST['parentemail'], $subject, $message, true); $options['coppauser'] = 1; } else { $_POST['parentemail'] = ''; $options['coppauser'] = 0; } // check daylight saving stuff switch ($_POST['dst']) { case 2: $options['dstauto'] = 1; $options['dstonoff'] = 0; break; case 1: $options['dstauto'] = 0; $options['dstonoff'] = 1; break; case 0: $options['dstauto'] = 0; $options['dstonoff'] = 0; break; } $options['invisible'] = iif(bitwise(REGOPTION_INVISIBLEMODE, $vboptions['defaultregoptions']), 1, 0); $options['receivepm'] = iif(bitwise(REGOPTION_ENABLEPM, $vboptions['defaultregoptions']), 1, 0); $options['emailonpm'] = iif(bitwise(REGOPTION_EMAILONPM, $vboptions['defaultregoptions']), 1, 0); $options['showreputation'] = iif(bitwise(REGOPTION_SHOWREPUTATION, $vboptions['defaultregoptions']), 1, 0); $options['showvcard'] = iif(bitwise(REGOPTION_VCARD, $vboptions['defaultregoptions']), 1, 0); $options['showsignatures'] = iif(bitwise(REGOPTION_SIGNATURE, $vboptions['defaultregoptions']), 1, 0); $options['showavatars'] = iif(bitwise(REGOPTION_AVATAR, $vboptions['defaultregoptions']), 1, 0); $options['showimages'] = iif(bitwise(REGOPTION_IMAGE, $vboptions['defaultregoptions']), 1, 0); $options = convert_array_to_bits($options, $_USEROPTIONS); $DB_site->query(" INSERT INTO " . TABLE_PREFIX . "user (username, salt, password, passworddate, email, parentemail, showvbcode, usertitle, joindate, daysprune, lastvisit, lastactivity, usergroupid, timezoneoffset, options, maxposts, threadedmode, startofweek, ipaddress, pmpopup, referrerid, reputationlevelid, reputation, autosubscribe, birthday, birthday_search) VALUES ('" . addslashes(htmlspecialchars_uni($_POST['username'])) . "', '" . addslashes($salt) . "', '" . addslashes($hashedpassword) . "', NOW(), '" . addslashes(htmlspecialchars_uni($_POST['email'])) . "', '" . addslashes(htmlspecialchars_uni($_POST['parentemail'])) . "', $regoption[showvbcode], '" . addslashes($usertitle) . "', " . TIMENOW . ", 0, " . TIMENOW . ", " . TIMENOW . ", " . intval($newusergroupid) . ", '" . addslashes($_POST['timezoneoffset']) . "', $options, -1, $regoption[threadedmode], 1, '" . addslashes(IPADDRESS) . "', $regoption[pmpopup], " . intval($testreferrerid['userid']) . ", " . intval($reputationlevel['reputationlevelid']) . ", " . intval($vboptions['reputationdefault']) . ", $regoption[autosubscribe], '$birthday', '$birthday_search' ) "); $userid = $DB_site->insert_id(); // Insert user text fields $DB_site->query("INSERT INTO " . TABLE_PREFIX . "usertextfield (userid) VALUES ($userid)"); // insert custom user fields $DB_site->query("INSERT INTO " . TABLE_PREFIX . "userfield $userfieldsnames VALUES ($userid$userfields)"); // insert record into password history $DB_site->query("INSERT INTO " . TABLE_PREFIX . "passwordhistory (userid, password, passworddate) VALUES ($userid, '" . addslashes($hashedpassword) . "', NOW())"); $bbuserinfo['userid'] = $userid; // save user count and new user id to template require_once('./includes/functions_databuild.php'); build_user_statistics(); $DB_site->query("UPDATE " . TABLE_PREFIX . "session SET userid=$userid WHERE sessionhash='" . addslashes($session['dbsessionhash']) . "'"); if ($vboptions['newuseremail'] != '') { if ($havefields) { $DB_site->data_seek(0, $profilefields); while ($profilefield = $DB_site->fetch_array($profilefields)) { $cfield = ''; $varname = "field$profilefield[profilefieldid]"; if ($profilefield['type'] == 'checkbox' OR $profilefield['type'] == 'select_multiple') { $data = unserialize($profilefield['data']); foreach ($data AS $key => $value) { $pow = pow(2, $key); if (pow(2, $key) & $$varname) { $cfield .= (!empty($cfield) ? ', ' : '') . $data["$key"]; } } } else { $cfield = $$varname; } $customfields .= "$profilefield[title] : $cfield\n"; } } $username = $_POST['username']; $email = $_POST['email']; eval(fetch_email_phrases('newuser', 0)); $newemails = explode(' ', $vboptions['newuseremail']); foreach ($newemails AS $toemail) { if (trim($toemail)) { vbmail($toemail, $subject, $message); } } } $username = htmlspecialchars_uni($_POST['username']); $email = htmlspecialchars_uni($_POST['email']); // sort out emails and usergroups if ($vboptions['verifyemail']) { $activateid = build_user_activation_id($userid, 2, 0); eval(fetch_email_phrases('activateaccount')); vbmail($email, $subject, $message, true); } else if (!$vboptions['moderatenewmembers'] AND $vboptions['welcomemail']) { eval(fetch_email_phrases('welcomemail')); vbmail($email, $subject, $message); } $url = urldecode($url); if ($coppauser) { $_REQUEST['do'] = 'coppaform'; } else { if ($vboptions['verifyemail']) { eval(print_standard_error('error_registeremail', 1, 0)); } else { if ($vboptions['moderatenewmembers']) { eval(print_standard_error('error_moderateuser', 1, 0)); } else { $url = str_replace('"', '', $url); if (!$url) { $url = "$vboptions[forumhome].php?$session[sessionurl]"; } else { $url = iif(strpos($url, 'register.php') !== false, "$vboptions[forumhome].php?$session[sessionurl]", $url); } eval(print_standard_error('registration_complete', 1, 0)); } } } } } // ############################### start register ############################### if ($_REQUEST['do'] == 'register') { globalize($_REQUEST, array( 'month' => INT, 'day' => INT, 'year' => INT, 'agree' => INT, 'day' => INT, 'options' )); /////invite hack 1.0 by swalif for vb 3.0.5 if ($vboptions['refsystem'] and $vboptions['allowregistration'] ) { $refurl = $_POST['refurl'] ; if (!getuserref_id($refurl)) { eval(print_standard_error('error_inviterefused')); } if (checkrefeer(getuserref_id($refurl))) { eval(print_standard_error('error_inviterefused')); } } $userrefinfo = getuserref_id($refurl) ; /////invite hack 1.0 by swalif for vb 3.0.5 if (empty($agree)) { eval(print_standard_error('register_not_agreed')); } if (!$vboptions['allowregistration']) { eval(print_standard_error('error_noregister')); } if ($bbuserinfo['userid'] != 0 AND !$vboptions['allowmultiregs']) { eval(print_standard_error('error_alreadyregistered')); } if (!$errorlist) { if ($vboptions['timeoffset'] < 0) { $timezonesel['n' . (-$vboptions['timeoffset'] * 10)] = HTML_SELECTED; } else { $index = $vboptions['timeoffset'] * 10; $timezonesel["$index"] = HTML_SELECTED; } } if ($errorlist) { $checkedoff['adminemail'] = iif($options['adminemail'], HTML_CHECKED); $checkedoff['showemail'] = iif($options['showemail'], HTML_CHECKED); } else { $checkedoff['adminemail'] = iif(bitwise(REGOPTION_ADMINEMAIL, $vboptions['defaultregoptions']), HTML_CHECKED); $checkedoff['showemail'] = iif(bitwise(REGOPTION_RECEIVEEMAIL, $vboptions['defaultregoptions']), HTML_CHECKED); } if (bitwise(REGOPTION_REQBIRTHDAY, $vboptions['defaultregoptions'])) { $show['birthday'] = true; $monthselected["$month"] = HTML_SELECTED; $dayselected["$day"] = HTML_SELECTED; if ($year == 0) { $year = ''; } } else { $show['birthday'] = false; } if ($vboptions['allowhtml']) { $htmlonoff = $vbphrase['on']; } else { $htmlonoff = $vbphrase['off']; } if ($vboptions['allowbbcode']) { $bbcodeonoff = $vbphrase['on']; } else { $bbcodeonoff = $vbphrase['off']; } if ($vboptions['allowbbimagecode']) { $imgcodeonoff = $vbphrase['on']; } else { $imgcodeonoff = $vbphrase['off']; } if ($vboptions['allowsmilies']) { $smiliesonoff = $vbphrase['on']; } else { $smiliesonoff = $vbphrase['off']; } // image verification if ($vboptions['regimagecheck'] AND $vboptions['gdversion']) { // Transfer a successful image match over when other errors have occurred if ($errorlist AND $_POST['imagehash']) { $imagestamp = htmlspecialchars_uni($_POST['imagestamp']); $imagehash = htmlspecialchars_uni($_POST['imagehash']); } else { $string = fetch_registration_string(6); $imagehash = md5(uniqid(rand(), 1)); // Gen hash and insert into database; $DB_site->query("INSERT INTO " . TABLE_PREFIX . "regimage (regimagehash, imagestamp, dateline) VALUES ('" . addslashes($imagehash) . "', '" . addslashes($string) . "', " . TIMENOW . ")"); } eval('$imageregbit = "' . fetch_template('register_imagebit') . '";'); } else { $imageregbit = ''; } // Referrer if ($vboptions['usereferrer'] AND $bbuserinfo['userid'] == 0) { exec_switch_bg(); if ($errorlist) { $referrername = htmlspecialchars_uni($_POST['referrername']); } else if ($_COOKIE[COOKIE_PREFIX . 'referrerid']) { if ($referrername = $DB_site->query_first("SELECT username FROM " . TABLE_PREFIX . "user WHERE userid = ".intval($_COOKIE[COOKIE_PREFIX . 'referrerid']))) { $referrername = $referrername['username']; } } $show['referrer'] = true; } else { $show['referrer'] = false; } // get extra profile fields $who = trim($_REQUEST['who']); if ($who != 'adult') { $bgclass1 = 'alt1'; } $customfields_other = ''; $customfields_profile = ''; $customfields_option = ''; $profilefields = $DB_site->query(" SELECT * FROM " . TABLE_PREFIX . "profilefield WHERE editable > 0 AND required <> 0 ORDER BY displayorder "); while ($profilefield = $DB_site->fetch_array($profilefields)) { $profilefieldname = "field$profilefield[profilefieldid]"; $optionalname = $profilefieldname . '_opt'; $optionalfield = ''; $optional = ''; if (!$errorlist) { unset($bbuserinfo["$profilefieldname"]); } if ($profilefield['required'] == 2) { // not required to be filled in but still show $profile_variable = &$customfields_other; } else // required to be filled in { if ($profilefield['form']) { $profile_variable = &$customfields_option; } else { $profile_variable = &$customfields_profile; } } if ($profilefield['type'] == 'input') { if ($profilefield['data']) { $bbuserinfo["$profilefieldname"] = $profilefield['data']; } else { $bbuserinfo["$profilefieldname"] = htmlspecialchars_uni($bbuserinfo["$profilefieldname"]); } eval('$profile_variable .= "' . fetch_template('userfield_textbox') . '";'); } else if ($profilefield['type'] == 'textarea') { if ($profilefield['data']) { $bbuserinfo["$profilefieldname"] = $profilefield['data']; } else { $bbuserinfo["$profilefieldname"] = htmlspecialchars_uni($bbuserinfo["$profilefieldname"]); } eval('$profile_variable .= "' . fetch_template('userfield_textarea') . '";'); } else if ($profilefield['type'] == 'select') { $data = unserialize($profilefield['data']); $selectbits = ''; foreach ($data AS $key => $val) { $key++; $selected = ''; if ($bbuserinfo["$profilefieldname"]) { if (trim($val) == $bbuserinfo["$profilefieldname"]) { $selected = HTML_SELECTED; $foundselect = 1; } } else if ($profilefield['def'] AND $key == 1) { $selected = HTML_SELECTED; $foundselect = 1; } eval('$selectbits .= "' . fetch_template('userfield_select_option') . '";'); } if ($profilefield['optional']) { if (!$foundselect AND $bbuserinfo["$profilefieldname"]) { $optional = $bbuserinfo["$profilefieldname"]; } eval('$optionalfield = "' . fetch_template('userfield_optional_input') . '";'); } if (!$foundselect) { $selected = HTML_SELECTED; } else { $selected = ''; } $show['noemptyoption'] = iif($profilefield['def'] != 2, true, false); eval('$profile_variable .= "' . fetch_template('userfield_select') . '";'); } else if ($profilefield['type'] == 'radio') { $data = unserialize($profilefield['data']); $radiobits = ''; $foundfield = 0; foreach ($data AS $key => $val) { $key++; $checked = ''; if (!$bbuserinfo["$profilefieldname"] AND $key == 1 AND $profilefield['def'] == 1) { $checked = HTML_CHECKED; } else if (trim($val) == $bbuserinfo["$profilefieldname"]) { $checked = HTML_CHECKED; $foundfield = 1; } eval('$radiobits .= "' . fetch_template('userfield_radio_option') . '";'); } if ($profilefield['optional']) { if (!$foundfield AND $bbuserinfo["$profilefieldname"]) { $optional = $bbuserinfo["$profilefieldname"]; } eval('$optionalfield = "' . fetch_template('userfield_optional_input') . '";'); } eval('$profile_variable .= "' . fetch_template('userfield_radio') . '";'); } else if ($profilefield['type'] == 'checkbox') { $data = unserialize($profilefield['data']); $radiobits = ''; $perline = 0; foreach ($data AS $key => $val) { if ($bbuserinfo["$profilefieldname"] & pow(2,$key)) { $checked = HTML_CHECKED; } else { $checked = ''; } $key++; eval('$radiobits .= "' . fetch_template('userfield_checkbox_option') . '";'); $perline++; if ($profilefield['def'] > 0 AND $perline >= $profilefield['def']) { $radiobits .= '
    '; $perline = 0; } } eval('$profile_variable .= "' . fetch_template('userfield_radio') . '";'); } else if ($profilefield['type'] == 'select_multiple') { $data = unserialize($profilefield['data']); $selectbits = ''; $selected = ''; foreach ($data AS $key => $val) { if ($bbuserinfo["$profilefieldname"] & pow(2, $key)) { $selected = HTML_SELECTED; } else { $selected = ''; } $key++; eval('$selectbits .= "' . fetch_template('userfield_select_option') . '";'); } eval('$profile_variable .= "' . fetch_template('userfield_select_multiple') . '";'); } } if (!$_POST['who']) { $who = iif($_POST['coppauser'], 'coppa', 'adult'); } $show['coppa'] = $usecoppa = iif($who == 'adult' OR !$vboptions['usecoppa'], false, true); $show['customfields_profile'] = iif($customfields_profile OR $show['birthday'], true, false); $show['customfields_option'] = iif($customfields_option, true, false); $show['customfields_other'] = iif($customfields_other, true, false); foreach (fetch_timezone() AS $optionvalue => $timezonephrase) { $optiontitle = $vbphrase["$timezonephrase"]; $optionselected = iif($optionvalue == $vboptions['timeoffset'], HTML_SELECTED, ''); eval('$timezoneoptions .= "' . fetch_template('option') . '";'); } eval('$timezoneoptions = "' . fetch_template('modifyoptions_timezone') . '";'); eval('print_output("' . fetch_template('register') . '");'); } // ############################### start activate form ############################### if ($_REQUEST['a'] == 'ver') { // get username and password if ($bbuserinfo['userid'] == 0) { $bbuserinfo['username'] = ''; } $navbits = construct_navbits(array('' => $vbphrase['activate_your_account'])); eval('$navbar = "' . fetch_template('navbar') . '";'); eval('print_output("' . fetch_template('activateform') . '");'); } // ############################### start activate ############################### if ($_REQUEST['do'] == 'activate') { if ($userinfo = $DB_site->query_first("SELECT userid FROM " . TABLE_PREFIX . "user WHERE username='" . addslashes(htmlspecialchars_uni($_REQUEST['username'])) . "'")) { $_REQUEST['u'] = $userinfo['userid']; $_REQUEST['a'] = 'act'; $_REQUEST['i'] = $_REQUEST['activateid']; } else { eval(print_standard_error('error_badlogin')); } } if ($_REQUEST['a'] == 'act') { // do activate account $u = intval($_REQUEST['u']); $i = intval($_REQUEST['i']); $userinfo = verify_id('user', $u, 1, 1); if ($userinfo['usergroupid'] == 3) { // check valid activation id $user = $DB_site->query_first(" SELECT activationid, usergroupid FROM " . TABLE_PREFIX . "useractivation WHERE activationid=$i AND userid=$userinfo[userid] AND type=0 "); if (!$user OR $_REQUEST['i'] != $user['activationid']) { // send email again eval(print_standard_error('error_invalidactivateid')); } // delete activationid //$DB_site->query("DELETE FROM " . TABLE_PREFIX . "useractivation WHERE userid=$userinfo[userid] AND type=0"); if ($userinfo['coppauser'] OR ($vboptions['moderatenewmembers'] AND !$userinfo['posts'])) { // put user in moderated group $user['usergroupid'] = 4; } if (empty($user['usergroupid'])) { $user['usergroupid'] = 2; // sanity check } // ### UPDATE USER TITLE ### $dotitle = ''; $getusergroupid = iif($userinfo['displaygroupid'] != $userinfo['usergroupid'], $userinfo['displaygroupid'], $user['usergroupid']); $usergroup = $usergroupcache["$getusergroupid"]; if (!$userinfo['customtitle']) { if (!$usergroup['usertitle']) { $gettitle = $DB_site->query_first(" SELECT title FROM " . TABLE_PREFIX . "usertitle WHERE minposts <= " . intval($userinfo['posts']) . " ORDER BY minposts DESC "); $usertitle = $gettitle['title']; } else { $usertitle = $usergroup['usertitle']; } $dotitle = ', usertitle = \'' . addslashes($usertitle) . '\''; } // ### DO THE UG/TITLE UPDATE ### $DB_site->query("UPDATE " . TABLE_PREFIX . "user SET usergroupid=$user[usergroupid] $dotitle WHERE userid=$u"); if ($userinfo['coppauser'] OR ($vboptions['moderatenewmembers'] AND !$userinfo['posts'])) { // put user in moderated group eval(print_standard_error('error_moderateuser')); } else { // activate account $username = unhtmlspecialchars($userinfo['username']); if ($vboptions['welcomemail'] AND !$userinfo['posts']) { eval(fetch_email_phrases('welcomemail')); vbmail($userinfo['email'], $subject, $message); } $username = $userinfo['username']; eval(print_standard_error('registration_complete')); } } else { if ($userinfo['usergroupid'] == 4) { // In Moderation Queue eval(print_standard_error('activate_moderation')); } else { // Already activated eval(print_standard_error('activate_wrongusergroup')); } } } // ############################### start request activation email ############################### if ($_REQUEST['do'] == 'requestemail') { globalize($_REQUEST, array('email')); if ($email) { $email = htmlspecialchars_uni($email); } else if ($bbuserinfo['userid']) { $email = $bbuserinfo['email']; } else { $email = ''; } $navbits = construct_navbits(array( "register.php?$session[sessionurl]a=ver" => $vbphrase['activate_your_account'], '' => $vbphrase['email_activation_codes'] )); eval('$navbar = "' . fetch_template('navbar') . '";'); eval('print_output("' . fetch_template('activate_requestemail') . '");'); } if ($_POST['do'] == 'emailcode') { $users = $DB_site->query("SELECT user.userid, user.usergroupid, username, email, activationid, languageid FROM " . TABLE_PREFIX . "user AS user LEFT JOIN " . TABLE_PREFIX . "useractivation AS useractivation ON(user.userid = useractivation.userid AND type = 0) WHERE email = '" . addslashes(htmlspecialchars_uni($_REQUEST['email'])) . "'"); if ($DB_site->num_rows($users)) { while ($user = $DB_site->fetch_array($users)) { if ($user['usergroupid'] == 3) { // only do it if the user is in the correct usergroup // make random number if (empty($user['activationid'])) { //none exists so create one $user['activationid'] = build_user_activation_id($user['userid'], 2, 0); } else { $user['activationid'] = vbrand(0,100000000); $DB_site->query("UPDATE " . TABLE_PREFIX . "useractivation SET dateline=" . TIMENOW . ",activationid=$user[activationid] WHERE userid=$user[userid] AND type=0"); } $userid = $user['userid']; $username = $user['username']; $activateid = $user['activationid']; eval(fetch_email_phrases('activateaccount', $user['languageid'])); vbmail($user['email'], $subject, $message, true); } } $url = "$vboptions[forumhome].php?$session[sessionurl]"; $_REQUEST['forceredirect'] = 1; eval(print_standard_redirect('redirect_lostactivatecode')); } else { eval(print_standard_error('error_invalidemail')); } } // ############################### start coppa form ############################### if ($_REQUEST['do'] == 'coppaform') { if ($bbuserinfo['userid'] != 0) { $bbuserinfo['signature'] = nl2br($bbuserinfo['signature']); if ($bbuserinfo['showemail']) { $bbuserinfo['showemail'] = $vbphrase['no']; } else { $bbuserinfo['showemail'] = $vbphrase['yes']; } } else { $bbuserinfo['username'] = ''; $bbuserinfo['homepage'] = 'http://'; } eval('print_output("' . fetch_template('register_coppaform') . '");'); } /*======================================================================*\ || #################################################################### || # Downloaded: 04:25, Fri Jan 7th 2005 || # CVS: $RCSfile: register.php,v $ - $Revision: 1.212.2.5 $ || #################################################################### \*======================================================================*/ ?>