对discuz二次开发遇到的小问题。 我想在discuz中用户注册的时候再加一个字段,现在的问题是我找不到discuz的插入语句哦。那位大侠帮忙指点一下呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 register.php语句在register.php里改。应该在uc_user_register函数后面。但DZ好象是可以在后台就可以加自定义注册项的。 还有就是uc_user_register函数在代码里面是$uid = uc_user_register($username, $password, $email, $questionid, $answer, $_G['clientip']);这个怎么来修改呀 我把这个网页中的代码写出来了,大家帮我看看怎么改哦。我承认我是菜鸟。希望大家帮帮忙了。<?phpif(!defined('IN_DISCUZ')) { exit('Access Denied');}define('NOROBOT', TRUE);loaducenter();if(!function_exists('sendmail')) { include libfile('function/mail');}if($_G['uid']) { $ucsynlogin = $_G['setting']['allowsynlogin'] ? uc_user_synlogin($_G['uid']) : ''; showmessage('login_succeed', 'forum.php', array('username' => $_G['member']['username'], 'ucsynlogin' => $ucsynlogin, 'uid' => $_G['uid']));} elseif (!$_G['setting']['regstatus'] || !$_G['setting']['ucactivation']) { if($_G['gp_action'] == 'activation' || $_G['gp_activationauth']) { if(!$_G['setting']['ucactivation']) { showmessage('register_disable_activation'); } } elseif(!$_G['setting']['regstatus']) { showmessage(!$_G['setting']['regclosemessage'] ? 'register_disable' : $_G['setting']['regclosemessage']); }}$inviteconfig = array();$query = DB::query("SELECT * FROM ".DB::table('common_setting')." WHERE skey IN ('bbrules', 'bbrulestxt', 'welcomemsg', 'welcomemsgtitle', 'welcomemsgtxt', 'inviteconfig')");while($setting = DB::fetch($query)) { $$setting['skey'] = $setting['svalue'];}if($_G['cache']['ipctrl']['ipverifywhite']) { foreach(explode("\n", $_G['cache']['ipctrl']['ipverifywhite']) as $ctrlip) { if(preg_match("/^(".preg_quote(($ctrlip = trim($ctrlip)), '/').")/", $_G['clientip'])) { $_G['setting']['regverify'] = 0; break; } }}$groupinfo = array();if($_G['setting']['regverify']) { $groupinfo['groupid'] = 8;} else { $groupinfo = DB::fetch_first("SELECT groupid FROM ".DB::table('common_usergroup')." WHERE creditshigher<=".intval($_G['setting']['initcredits'])." AND ".intval($_G['setting']['initcredits'])."<creditslower LIMIT 1");}$seccodecheck = $_G['setting']['seccodestatus'] & 1;$secqaacheck = $_G['setting']['secqaa']['status'] & 1;$fromuid = !empty($_G['cookie']['promotion']) && $_G['setting']['creditspolicy']['promotion_register'] ? intval($_G['cookie']['promotion']) : 0; $username = isset($_G['gp_username']) ? $_G['gp_username'] : '';$bbrulehash = $bbrules ? substr(md5(FORMHASH), 0, 8) : '';$auth = $_G['gp_auth'];$invite = getinvite();if($_G['setting']['regstatus'] == 2 && empty($invite)) { showmessage('not_open_registration_invite');}require_once libfile('function/profile');if(!submitcheck('regsubmit', 0, $seccodecheck, $secqaacheck)) { if($_G['gp_action'] == 'activation') { $auth = explode("\t", authcode($auth, 'DECODE')); if(FORMHASH != $auth[1]) { showmessage('register_activation_invalid', 'member.php?mod=logging&action=login'); } $username = $auth[0]; $activationauth = authcode("$auth[0]\t".FORMHASH, 'ENCODE'); } $_G['referer'] = isset($_G['referer']) ? dhtmlspecialchars($_G['referer']) : dreferer(); $fromuser = !empty($fromuser) ? dhtmlspecialchars($fromuser) : ''; if($fromuid) { $query = DB::query("SELECT username FROM ".DB::table('common_member')." WHERE uid='$fromuid'"); if(DB::num_rows($query)) { $fromuser = dhtmlspecialchars(DB::result($query, 0)); } else { dsetcookie('promotion'); } } $bbrulestxt = nl2br("\n$bbrulestxt\n\n"); if($_G['gp_action'] == 'activation') { $auth = dhtmlspecialchars($auth); } if($seccodecheck) { $seccode = random(6, 1); } if($_G['setting']['secqaa']['status'][1]) { $seccode = random(1, 1) * 1000000 + substr($seccode, -6); } $username = dhtmlspecialchars($username); $htmls = $settings = array(); foreach($_G['cache']['fields_required'] as $field) { $fieldid = $field['fieldid']; $html = profile_setting($fieldid); if($html) { $settings[$fieldid] = $_G['cache']['profilesetting'][$fieldid]; $htmls[$fieldid] = $html; } } include template('member/register');} else { if($bbrules && $bbrulehash != $_POST['agreebbrule']) { showmessage('register_rules_agree'); } $activation = array(); if(isset($_G['gp_activationauth'])) { $activationauth = explode("\t", authcode($_G['gp_activationauth'], 'DECODE')); if($activationauth[1] == FORMHASH && !($activation = daddslashes(uc_get_user($activationauth[0]), 1))) { showmessage('register_activation_invalid', 'member.php?mod=logging&action=login'); } } if(!$activation) { $username = addslashes(trim(dstripslashes($username))); if(uc_get_user($username) && !DB::result_first("SELECT uid FROM ".DB::table('common_member')." WHERE username='$username'")) { if($_G['inajax']) { showmessage('profile_username_duplicate'); } else { showmessage('register_activation_message', 'member.php?mod=logging&action=login', array('username' => $username)); } } if($_G['gp_password'] !== $_G['gp_password2']) { showmessage('profile_passwd_notmatch'); } if(!$_G['gp_password'] || $_G['gp_password'] != addslashes($_G['gp_password'])) { showmessage('profile_passwd_illegal'); } $email = trim($_G['gp_email']); $password = $_G['gp_password']; } $censorexp = '/^('.str_replace(array('\\*', "\r\n", ' '), array('.*', '|', ''), preg_quote(($_G['setting']['censoruser'] = trim($_G['setting']['censoruser'])), '/')).')$/i'; if($_G['setting']['censoruser'] && @preg_match($censorexp, $username)) { showmessage('profile_username_protect'); } $profile = $verifyarr = array(); foreach($_G['cache']['fields_required'] as $field) { $field_key = $field['fieldid']; $field_val = $_G['gp_'.$field_key]; if(!profile_check($field_key, $field_val)) { showmessage('profile_required_info_invalid'); } if($field['needverify']) { $verifyarr[$field_key] = $field_val; } else { $profile[$field_key] = $field_val; } } if($_G['setting']['regverify'] == 2 && !trim($_G['gp_regmessage'])) { showmessage('profile_required_info_invalid'); } if($_G['cache']['ipctrl']['ipregctrl']) { foreach(explode("\n", $_G['cache']['ipctrl']['ipregctrl']) as $ctrlip) { if(preg_match("/^(".preg_quote(($ctrlip = trim($ctrlip)), '/').")/", $_G['clientip'])) { $ctrlip = $ctrlip.'%'; $_G['setting']['regctrl'] = 72; break; } else { $ctrlip = $_G['clientip']; } } } else { $ctrlip = $_G['clientip']; } if($_G['setting']['regctrl']) { $query = DB::query("SELECT ip FROM ".DB::table('common_regip')." WHERE ip LIKE '$ctrlip' AND count='-1' AND dateline>$_G[timestamp]-'".$_G['setting']['regctrl']."'*3600 LIMIT 1"); if(DB::num_rows($query)) { showmessage('register_ctrl', NULL, array('regctrl' => $_G['setting']['regctrl'])); } } $secques = $questionid > 0 ? random(8) : ''; if(!$activation) { $uid = uc_user_register($username, $password, $email, $questionid, $answer, $_G['clientip']); if($uid <= 0) { if($uid == -1) { showmessage('profile_username_illegal'); } elseif($uid == -2) { showmessage('profile_username_protect'); } elseif($uid == -3) { showmessage('profile_username_duplicate'); } elseif($uid == -4) { showmessage('profile_email_illegal'); } elseif($uid == -5) { showmessage('profile_email_domain_illegal'); } elseif($uid == -6) { showmessage('profile_email_duplicate'); } else { showmessage('undefined_action', NULL); } } } else { list($uid, $username, $email) = $activation; } if(DB::result_first("SELECT uid FROM ".DB::table('common_member')." WHERE uid='$uid'")) { if(!$activation) { uc_user_delete($uid); } showmessage('profile_uid_duplicate', '', array('uid' => $uid)); } if($_G['setting']['regfloodctrl']) { if($regattempts = DB::result_first("SELECT count FROM ".DB::table('common_regip')." WHERE ip='$_G[clientip]' AND count>'0' AND dateline>'$_G[timestamp]'-86400")) { if($regattempts >= $_G['setting']['regfloodctrl']) { showmessage('register_flood_ctrl', NULL, array('regfloodctrl' => $_G['setting']['regfloodctrl'])); } else { DB::query("UPDATE ".DB::table('common_regip')." SET count=count+1 WHERE ip='$_G[clientip]' AND count>'0'"); } } else { DB::query("INSERT INTO ".DB::table('common_regip')." (ip, count, dateline) VALUES ('$_G[clientip]', '1', '$_G[timestamp]')"); } } $password = md5(random(10)); if($invite && $_G['setting']['inviteconfig']['invitegroupid']) { $groupinfo['groupid'] = $_G['setting']['inviteconfig']['invitegroupid']; } $init_arr = explode(',', $_G['setting']['initcredits']); $userdata = array( 'uid' => $uid, 'username' => $username, 'password' => $password, 'email' => $email, 'adminid' => 0, 'groupid' => $groupinfo[groupid], 'regdate' => TIMESTAMP, 'credits' => $init_arr[0], 'timeoffset' => 9999 ); DB::insert('common_member', $userdata); $status_data = array( 'uid' => $uid, 'regip' => $_G['clientip'], 'lastip' => $_G['clientip'], 'lastvisit' => TIMESTAMP, 'lastactivity' => TIMESTAMP, 'lastpost' => 0, 'lastsendmail' => 0, ); DB::insert('common_member_status', $status_data); $profile['uid'] = $uid; DB::insert('common_member_profile', $profile); DB::insert('common_member_field_forum', array('uid' => $uid)); DB::insert('common_member_field_home', array('uid' => $uid)); if($verifyarr) { $inserts = array(); foreach($verifyarr as $key=>$newvalue) { $fieldids[] = $key; $oldvalue = ''; $inserts[] = "('$uid', '$username', '$key', '$oldvalue', '$newvalue', '$_G[timestamp]')"; } DB::query('INSERT INTO '.DB::table('common_member_security').'(`uid`, `username`, `fieldid`, `oldvalue`, `newvalue`, `dateline`) VALUES '.implode(', ', $inserts)); } $count_data = array( 'uid' => $uid, 'extcredits1' => $init_arr[1], 'extcredits2' => $init_arr[2], 'extcredits3' => $init_arr[3], 'extcredits4' => $init_arr[4], 'extcredits5' => $init_arr[5], 'extcredits6' => $init_arr[6], 'extcredits7' => $init_arr[7], 'extcredits8' => $init_arr[8] ); DB::insert('common_member_count', $count_data); manyoulog('user', $uid, 'add'); $totalmembers = DB::result_first("SELECT COUNT(*) FROM ".DB::table('common_member')); $userstats = array('totalmembers' => $totalmembers, 'newsetuser' => $username); save_syscache('userstats', $userstats); if($_G['setting']['regctrl'] || $_G['setting']['regfloodctrl']) { DB::query("DELETE FROM ".DB::table('common_regip')." WHERE dateline<='$_G[timestamp]'-".($_G['setting']['regctrl'] > 72 ? $_G['setting']['regctrl'] : 72)."*3600", 'UNBUFFERED'); if($_G['setting']['regctrl']) { DB::query("INSERT INTO ".DB::table('common_regip')." (ip, count, dateline) VALUES ('$_G[clientip]', '-1', '$_G[timestamp]')"); } } $regmessage = dhtmlspecialchars($_G['gp_regmessage']); if($_G['setting']['regverify'] == 2) { DB::query("REPLACE INTO ".DB::table('common_member_validate')." (uid, submitdate, moddate, admin, submittimes, status, message, re) VALUES ('$uid', '$_G[timestamp]', '0', '', '1', '0', '$regmessage', '')"); } $_G['uid'] = $uid; $_G['username'] = $username; $_G['member']['username'] = dstripslashes($_G['username']); $_G['member']['password'] = $password; $_G['groupid'] = $groupinfo['groupid']; include_once libfile('function/stat'); updatestat('register'); $_CORE = & discuz_core::instance(); $_CORE->session->set('uid', $uid); $_CORE->session->set('username', $username); dsetcookie('auth', authcode("{$_G['member']['password']}\t$_G[uid]", 'ENCODE'), 2592000, 1, true); if($invite['id']) { DB::update("common_invite", array('fuid'=>$uid, 'fusername'=>$username), array('id'=>$invite['id'])); updatestat('invite'); } if($invite['uid']) { if($_G['setting']['inviteconfig']['inviteaddcredit']) { updatemembercount($uid, array($_G['setting']['inviteconfig']['inviterewardcredit'] => $_G['setting']['inviteconfig']['inviteaddcredit'])); } if($_G['setting']['inviteconfig']['invitedaddcredit']) { updatemembercount($invite['uid'], array($_G['setting']['inviteconfig']['inviterewardcredit'] => $_G['setting']['inviteconfig']['invitedaddcredit'])); } require_once libfile('function/friend'); friend_make($invite['uid'], $invite['username'], false); notification_add($invite['uid'], 'friend', 'invite_friend', array('actor' => '<a href="home.php?mod=space&uid='.$invite['uid'].'" target="_blank">'.$invite['username'].'</a>'), 1); updatecreditbyaction('invitefriend', $invite['uid']); space_merge($invite, 'field_home'); if(!empty($invite['privacy']['feed']['invite'])) { require_once libfile('function/feed'); $tite_data = array('username' => '<a href="home.php?mod=space&uid='.$_G['uid'].'">'.$_G['username'].'</a>'); feed_add('friend', 'feed_invite', $tite_data, '', array(), '', array(), array(), '', '', '', 0, 0, '', $invite['uid'], $invite['username']); } if($invite['appid']) { updatestat('appinvite'); } } if($welcomemsg && !empty($welcomemsgtxt)) { $welcomtitle = !empty($_G['setting']['welcomemsgtitle']) ? $_G['setting']['welcomemsgtitle'] : "Welcome to ".$_G['setting']['bbname']."!"; $welcomtitle = addslashes(replacesitevar($welcomtitle)); $welcomemsgtxt = addslashes(replacesitevar($welcomemsgtxt)); if($welcomemsg == 1) { sendpm($uid, $welcomtitle, $welcomemsgtxt, 0); } elseif($welcomemsg == 2) { sendmail("$username <$email>", $welcomtitle, $welcomemsgtxt); } } if($fromuid) { updatecreditbyaction('promotion_register', $fromuid); dsetcookie('promotion', ''); } dsetcookie('loginuser', ''); dsetcookie('activationauth', '', -86400 * 365); dsetcookie('invite_auth', '', -86400 * 365); if(!empty($_G['inajax'])) { $_G['setting']['msgforward'] = unserialize($_G['setting']['msgforward']); $mrefreshtime = intval($_G['setting']['msgforward']['refreshtime']) * 1000; $message = 1; if($_G['setting']['regverify'] != 1) { include template('member/register'); } } $param = array('bbname' => $_G['setting']['bbname'], 'username' => $_G['username'], 'uid' => $_G['uid']); switch($_G['setting']['regverify']) { case 1: $idstring = random(6); $authstr = $_G['setting']['regverify'] == 1 ? "$_G[timestamp]\t2\t$idstring" : ''; DB::query("UPDATE ".DB::table('common_member_field_forum')." SET authstr='$authstr' WHERE uid='$_G[uid]'"); $email_verify_message = lang('email', 'email_verify_message', array( 'username' => $_G['member']['username'], 'bbname' => $_G['setting']['bbname'], 'uid' => $_G['uid'], 'siteurl' => $_G['siteurl'], 'idstring' => $idstring, )); sendmail("$username <$email>", lang('email', 'email_verify_subject'), $email_verify_message); if(!empty($_G['inajax'])) { include template('member/register'); } else { showmessage('profile_email_verify', '', $param); } break; case 2: showmessage('register_manual_verify', 'home.php?mod=space&do=home', $param); break; default: showmessage('register_succeed', dreferer(), $param); break; }}function replacesitevar($string, $replaces = array()) { global $_G; $sitevars = array( '{sitename}' => $_G['setting']['sitename'], '{bbname}' => $_G['setting']['bbname'], '{time}' => dgmdate(TIMESTAMP, 'Y-n-j H:i'), '{adminemail}' => $_G['setting']['adminemail'], '{username}' => $_G['member']['username'], '{myname}' => $_G['member']['username'] ); $replaces = array_merge($sitevars, $replaces); return str_replace(array_keys($replaces), array_values($replaces), $string);}?> 请教php编译问题 关于PHP分页 HTML Parsing Error: Unable to modify the parent container element before the chi php 工作流的问题 PHP url参数问题 用接口和手机做对接发送短信,但是短信发送不过去。 Discuz 部署起来访问样式都加载不出来 请教类似这样的整站有没有免费的整站或者现成的付费解决方案? DW链接购买空间的PHPMYADMIN问题 memcached拓展安装老是找不到 PHP CURL 模拟POST返回500错误。 uchome dedecms ecshop 无法同步登录
应该在uc_user_register函数后面。但DZ好象是可以在后台就可以加自定义注册项的。
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}define('NOROBOT', TRUE);loaducenter();if(!function_exists('sendmail')) {
include libfile('function/mail');
}if($_G['uid']) {
$ucsynlogin = $_G['setting']['allowsynlogin'] ? uc_user_synlogin($_G['uid']) : '';
showmessage('login_succeed', 'forum.php', array('username' => $_G['member']['username'], 'ucsynlogin' => $ucsynlogin, 'uid' => $_G['uid']));
} elseif (!$_G['setting']['regstatus'] || !$_G['setting']['ucactivation']) {
if($_G['gp_action'] == 'activation' || $_G['gp_activationauth']) {
if(!$_G['setting']['ucactivation']) {
showmessage('register_disable_activation');
}
} elseif(!$_G['setting']['regstatus']) {
showmessage(!$_G['setting']['regclosemessage'] ? 'register_disable' : $_G['setting']['regclosemessage']);
}
}$inviteconfig = array();
$query = DB::query("SELECT * FROM ".DB::table('common_setting')." WHERE skey IN ('bbrules', 'bbrulestxt', 'welcomemsg', 'welcomemsgtitle', 'welcomemsgtxt', 'inviteconfig')");
while($setting = DB::fetch($query)) {
$$setting['skey'] = $setting['svalue'];
}if($_G['cache']['ipctrl']['ipverifywhite']) {
foreach(explode("\n", $_G['cache']['ipctrl']['ipverifywhite']) as $ctrlip) {
if(preg_match("/^(".preg_quote(($ctrlip = trim($ctrlip)), '/').")/", $_G['clientip'])) {
$_G['setting']['regverify'] = 0;
break;
}
}
}
$groupinfo = array();
if($_G['setting']['regverify']) {
$groupinfo['groupid'] = 8;
} else {
$groupinfo = DB::fetch_first("SELECT groupid FROM ".DB::table('common_usergroup')." WHERE creditshigher<=".intval($_G['setting']['initcredits'])." AND ".intval($_G['setting']['initcredits'])."<creditslower LIMIT 1");
}
$seccodecheck = $_G['setting']['seccodestatus'] & 1;
$secqaacheck = $_G['setting']['secqaa']['status'] & 1;$fromuid = !empty($_G['cookie']['promotion']) && $_G['setting']['creditspolicy']['promotion_register'] ? intval($_G['cookie']['promotion']) : 0;
$auth = $_G['gp_auth'];$invite = getinvite();
if($_G['setting']['regstatus'] == 2 && empty($invite)) {
showmessage('not_open_registration_invite');
}require_once libfile('function/profile');if(!submitcheck('regsubmit', 0, $seccodecheck, $secqaacheck)) { if($_G['gp_action'] == 'activation') {
$auth = explode("\t", authcode($auth, 'DECODE'));
if(FORMHASH != $auth[1]) {
showmessage('register_activation_invalid', 'member.php?mod=logging&action=login');
}
$username = $auth[0];
$activationauth = authcode("$auth[0]\t".FORMHASH, 'ENCODE');
} $_G['referer'] = isset($_G['referer']) ? dhtmlspecialchars($_G['referer']) : dreferer(); $fromuser = !empty($fromuser) ? dhtmlspecialchars($fromuser) : '';
if($fromuid) {
$query = DB::query("SELECT username FROM ".DB::table('common_member')." WHERE uid='$fromuid'");
if(DB::num_rows($query)) {
$fromuser = dhtmlspecialchars(DB::result($query, 0));
} else {
dsetcookie('promotion');
}
} $bbrulestxt = nl2br("\n$bbrulestxt\n\n");
if($_G['gp_action'] == 'activation') {
$auth = dhtmlspecialchars($auth);
} if($seccodecheck) {
$seccode = random(6, 1);
}
if($_G['setting']['secqaa']['status'][1]) {
$seccode = random(1, 1) * 1000000 + substr($seccode, -6);
} $username = dhtmlspecialchars($username); $htmls = $settings = array();
foreach($_G['cache']['fields_required'] as $field) {
$fieldid = $field['fieldid'];
$html = profile_setting($fieldid);
if($html) {
$settings[$fieldid] = $_G['cache']['profilesetting'][$fieldid];
$htmls[$fieldid] = $html;
}
}
include template('member/register');} else { if($bbrules && $bbrulehash != $_POST['agreebbrule']) {
showmessage('register_rules_agree');
} $activation = array();
if(isset($_G['gp_activationauth'])) {
$activationauth = explode("\t", authcode($_G['gp_activationauth'], 'DECODE'));
if($activationauth[1] == FORMHASH && !($activation = daddslashes(uc_get_user($activationauth[0]), 1))) {
showmessage('register_activation_invalid', 'member.php?mod=logging&action=login');
}
} if(!$activation) {
$username = addslashes(trim(dstripslashes($username)));
if(uc_get_user($username) && !DB::result_first("SELECT uid FROM ".DB::table('common_member')." WHERE username='$username'")) {
if($_G['inajax']) {
showmessage('profile_username_duplicate');
} else {
showmessage('register_activation_message', 'member.php?mod=logging&action=login', array('username' => $username));
}
} if($_G['gp_password'] !== $_G['gp_password2']) {
showmessage('profile_passwd_notmatch');
} if(!$_G['gp_password'] || $_G['gp_password'] != addslashes($_G['gp_password'])) {
showmessage('profile_passwd_illegal');
} $email = trim($_G['gp_email']);
$password = $_G['gp_password']; } $censorexp = '/^('.str_replace(array('\\*', "\r\n", ' '), array('.*', '|', ''), preg_quote(($_G['setting']['censoruser'] = trim($_G['setting']['censoruser'])), '/')).')$/i'; if($_G['setting']['censoruser'] && @preg_match($censorexp, $username)) {
showmessage('profile_username_protect');
} $profile = $verifyarr = array();
foreach($_G['cache']['fields_required'] as $field) {
$field_key = $field['fieldid'];
$field_val = $_G['gp_'.$field_key];
if(!profile_check($field_key, $field_val)) {
showmessage('profile_required_info_invalid');
}
if($field['needverify']) {
$verifyarr[$field_key] = $field_val;
} else {
$profile[$field_key] = $field_val;
}
}
showmessage('profile_required_info_invalid');
} if($_G['cache']['ipctrl']['ipregctrl']) {
foreach(explode("\n", $_G['cache']['ipctrl']['ipregctrl']) as $ctrlip) {
if(preg_match("/^(".preg_quote(($ctrlip = trim($ctrlip)), '/').")/", $_G['clientip'])) {
$ctrlip = $ctrlip.'%';
$_G['setting']['regctrl'] = 72;
break;
} else {
$ctrlip = $_G['clientip'];
}
}
} else {
$ctrlip = $_G['clientip'];
}
if($_G['setting']['regctrl']) {
$query = DB::query("SELECT ip FROM ".DB::table('common_regip')." WHERE ip LIKE '$ctrlip' AND count='-1' AND dateline>$_G[timestamp]-'".$_G['setting']['regctrl']."'*3600 LIMIT 1");
if(DB::num_rows($query)) {
showmessage('register_ctrl', NULL, array('regctrl' => $_G['setting']['regctrl']));
}
} $secques = $questionid > 0 ? random(8) : ''; if(!$activation) {
$uid = uc_user_register($username, $password, $email, $questionid, $answer, $_G['clientip']); if($uid <= 0) {
if($uid == -1) {
showmessage('profile_username_illegal');
} elseif($uid == -2) {
showmessage('profile_username_protect');
} elseif($uid == -3) {
showmessage('profile_username_duplicate');
} elseif($uid == -4) {
showmessage('profile_email_illegal');
} elseif($uid == -5) {
showmessage('profile_email_domain_illegal');
} elseif($uid == -6) {
showmessage('profile_email_duplicate');
} else {
showmessage('undefined_action', NULL);
}
}
} else {
list($uid, $username, $email) = $activation;
} if(DB::result_first("SELECT uid FROM ".DB::table('common_member')." WHERE uid='$uid'")) {
if(!$activation) {
uc_user_delete($uid);
}
showmessage('profile_uid_duplicate', '', array('uid' => $uid));
} if($_G['setting']['regfloodctrl']) {
if($regattempts = DB::result_first("SELECT count FROM ".DB::table('common_regip')." WHERE ip='$_G[clientip]' AND count>'0' AND dateline>'$_G[timestamp]'-86400")) {
if($regattempts >= $_G['setting']['regfloodctrl']) {
showmessage('register_flood_ctrl', NULL, array('regfloodctrl' => $_G['setting']['regfloodctrl']));
} else {
DB::query("UPDATE ".DB::table('common_regip')." SET count=count+1 WHERE ip='$_G[clientip]' AND count>'0'");
}
} else {
DB::query("INSERT INTO ".DB::table('common_regip')." (ip, count, dateline)
VALUES ('$_G[clientip]', '1', '$_G[timestamp]')");
}
} $password = md5(random(10));
if($invite && $_G['setting']['inviteconfig']['invitegroupid']) {
$groupinfo['groupid'] = $_G['setting']['inviteconfig']['invitegroupid'];
}
$init_arr = explode(',', $_G['setting']['initcredits']);
$userdata = array(
'uid' => $uid,
'username' => $username,
'password' => $password,
'email' => $email,
'adminid' => 0,
'groupid' => $groupinfo[groupid],
'regdate' => TIMESTAMP,
'credits' => $init_arr[0],
'timeoffset' => 9999
);
DB::insert('common_member', $userdata);
$status_data = array(
'uid' => $uid,
'regip' => $_G['clientip'],
'lastip' => $_G['clientip'],
'lastvisit' => TIMESTAMP,
'lastactivity' => TIMESTAMP,
'lastpost' => 0,
'lastsendmail' => 0,
);
DB::insert('common_member_status', $status_data);
$profile['uid'] = $uid;
DB::insert('common_member_profile', $profile);
DB::insert('common_member_field_forum', array('uid' => $uid));
DB::insert('common_member_field_home', array('uid' => $uid));
if($verifyarr) {
$inserts = array();
foreach($verifyarr as $key=>$newvalue) {
$fieldids[] = $key;
$oldvalue = '';
$inserts[] = "('$uid', '$username', '$key', '$oldvalue', '$newvalue', '$_G[timestamp]')";
}
DB::query('INSERT INTO '.DB::table('common_member_security').'(`uid`, `username`, `fieldid`, `oldvalue`, `newvalue`, `dateline`) VALUES '.implode(', ', $inserts));
} $count_data = array(
'uid' => $uid,
'extcredits1' => $init_arr[1],
'extcredits2' => $init_arr[2],
'extcredits3' => $init_arr[3],
'extcredits4' => $init_arr[4],
'extcredits5' => $init_arr[5],
'extcredits6' => $init_arr[6],
'extcredits7' => $init_arr[7],
'extcredits8' => $init_arr[8]
);
DB::insert('common_member_count', $count_data);
manyoulog('user', $uid, 'add'); $totalmembers = DB::result_first("SELECT COUNT(*) FROM ".DB::table('common_member'));
$userstats = array('totalmembers' => $totalmembers, 'newsetuser' => $username); save_syscache('userstats', $userstats); if($_G['setting']['regctrl'] || $_G['setting']['regfloodctrl']) {
DB::query("DELETE FROM ".DB::table('common_regip')." WHERE dateline<='$_G[timestamp]'-".($_G['setting']['regctrl'] > 72 ? $_G['setting']['regctrl'] : 72)."*3600", 'UNBUFFERED');
if($_G['setting']['regctrl']) {
DB::query("INSERT INTO ".DB::table('common_regip')." (ip, count, dateline)
VALUES ('$_G[clientip]', '-1', '$_G[timestamp]')");
}
} $regmessage = dhtmlspecialchars($_G['gp_regmessage']);
if($_G['setting']['regverify'] == 2) {
DB::query("REPLACE INTO ".DB::table('common_member_validate')." (uid, submitdate, moddate, admin, submittimes, status, message, re)
VALUES ('$uid', '$_G[timestamp]', '0', '', '1', '0', '$regmessage', '')");
} $_G['uid'] = $uid;
$_G['username'] = $username;
$_G['member']['username'] = dstripslashes($_G['username']);
$_G['member']['password'] = $password;
$_G['groupid'] = $groupinfo['groupid'];
include_once libfile('function/stat');
updatestat('register'); $_CORE = & discuz_core::instance();
$_CORE->session->set('uid', $uid);
$_CORE->session->set('username', $username); dsetcookie('auth', authcode("{$_G['member']['password']}\t$_G[uid]", 'ENCODE'), 2592000, 1, true); if($invite['id']) {
DB::update("common_invite", array('fuid'=>$uid, 'fusername'=>$username), array('id'=>$invite['id']));
updatestat('invite');
}
if($invite['uid']) {
if($_G['setting']['inviteconfig']['inviteaddcredit']) {
updatemembercount($uid,
array($_G['setting']['inviteconfig']['inviterewardcredit'] => $_G['setting']['inviteconfig']['inviteaddcredit']));
}
if($_G['setting']['inviteconfig']['invitedaddcredit']) {
updatemembercount($invite['uid'],
array($_G['setting']['inviteconfig']['inviterewardcredit'] => $_G['setting']['inviteconfig']['invitedaddcredit']));
}
require_once libfile('function/friend');
friend_make($invite['uid'], $invite['username'], false);
notification_add($invite['uid'], 'friend', 'invite_friend', array('actor' => '<a href="home.php?mod=space&uid='.$invite['uid'].'" target="_blank">'.$invite['username'].'</a>'), 1);
updatecreditbyaction('invitefriend', $invite['uid']); space_merge($invite, 'field_home');
if(!empty($invite['privacy']['feed']['invite'])) {
require_once libfile('function/feed');
$tite_data = array('username' => '<a href="home.php?mod=space&uid='.$_G['uid'].'">'.$_G['username'].'</a>');
feed_add('friend', 'feed_invite', $tite_data, '', array(), '', array(), array(), '', '', '', 0, 0, '', $invite['uid'], $invite['username']);
}
if($invite['appid']) {
updatestat('appinvite');
}
} if($welcomemsg && !empty($welcomemsgtxt)) {
$welcomtitle = !empty($_G['setting']['welcomemsgtitle']) ? $_G['setting']['welcomemsgtitle'] : "Welcome to ".$_G['setting']['bbname']."!";
$welcomtitle = addslashes(replacesitevar($welcomtitle));
$welcomemsgtxt = addslashes(replacesitevar($welcomemsgtxt));
if($welcomemsg == 1) {
sendpm($uid, $welcomtitle, $welcomemsgtxt, 0);
} elseif($welcomemsg == 2) {
sendmail("$username <$email>", $welcomtitle, $welcomemsgtxt);
}
} if($fromuid) {
updatecreditbyaction('promotion_register', $fromuid);
dsetcookie('promotion', '');
} dsetcookie('loginuser', '');
dsetcookie('activationauth', '', -86400 * 365);
dsetcookie('invite_auth', '', -86400 * 365);
if(!empty($_G['inajax'])) {
$_G['setting']['msgforward'] = unserialize($_G['setting']['msgforward']);
$mrefreshtime = intval($_G['setting']['msgforward']['refreshtime']) * 1000;
$message = 1;
if($_G['setting']['regverify'] != 1) {
include template('member/register');
}
} $param = array('bbname' => $_G['setting']['bbname'], 'username' => $_G['username'], 'uid' => $_G['uid']);
switch($_G['setting']['regverify']) {
case 1:
$idstring = random(6);
$authstr = $_G['setting']['regverify'] == 1 ? "$_G[timestamp]\t2\t$idstring" : '';
DB::query("UPDATE ".DB::table('common_member_field_forum')." SET authstr='$authstr' WHERE uid='$_G[uid]'");
$email_verify_message = lang('email', 'email_verify_message', array(
'username' => $_G['member']['username'],
'bbname' => $_G['setting']['bbname'],
'uid' => $_G['uid'],
'siteurl' => $_G['siteurl'],
'idstring' => $idstring,
));
sendmail("$username <$email>", lang('email', 'email_verify_subject'), $email_verify_message);
if(!empty($_G['inajax'])) {
include template('member/register');
} else {
showmessage('profile_email_verify', '', $param);
}
break;
case 2:
showmessage('register_manual_verify', 'home.php?mod=space&do=home', $param);
break;
default:
showmessage('register_succeed', dreferer(), $param);
break;
}}function replacesitevar($string, $replaces = array()) {
global $_G;
$sitevars = array(
'{sitename}' => $_G['setting']['sitename'],
'{bbname}' => $_G['setting']['bbname'],
'{time}' => dgmdate(TIMESTAMP, 'Y-n-j H:i'),
'{adminemail}' => $_G['setting']['adminemail'],
'{username}' => $_G['member']['username'],
'{myname}' => $_G['member']['username']
);
$replaces = array_merge($sitevars, $replaces);
return str_replace(array_keys($replaces), array_values($replaces), $string);
}
?>