www.gusucode.com > 08CMS空白站群系统 3.3 繁体 UTF-8 > upload/register.php

    <?php
include_once './include/general.inc.php';
include_once './include/common.fun.php';
$inajax = empty($inajax) ? 0 : 1;
if($inajax){
	if($action == 'checkmname') {
		$mname = addslashes(trim(stripslashes($mname)));
		$guestexp = '\xA1\xA1|^Guest|^\xD3\xCE\xBF\xCD|\xB9\x43\xAB\xC8';
		$censorexp = '/^('.str_replace(array('\\*', "\r\n", ' '), array('.*', '|', ''), preg_quote(($censoruser = trim($censoruser)), '/')).')$/i';
		if(preg_match("/^\s*$|^c:\\con\\con$|[%,\*\"\s\t\<\>\&]|$guestexp/is",$mname) || ($censoruser && @preg_match($censorexp,$mname))){
			$message = lang('user cname illegal');
		}else{
			$query = $db->query("SELECT mid FROM {$tblprefix}members WHERE mname='$mname'");
			if($db->num_rows($query)){
				$message = lang('user cname repeat');
			}else $message = 'succeed';
		}
	}elseif($action == 'checkregcode'){
		if(!regcode_pass('register',empty($regcode) ? '' : trim($regcode))){
			$message = lang('regcode error');
		}else $message = 'succeed';
	}
	@header("Expires: -1");
	@header("Cache-Control: no-store, private, post-check=0, pre-check=0, max-age=0", FALSE);
	@header("Pragma: no-cache");
	header("Content-type: application/xml");
	echo "<?xml version=\"1.0\" encoding=\"$mcharset\"?>\n<root><![CDATA[";
	echo $message;
	echo ']]></root>';
	die();

}else{
	include_once M_ROOT.'./include/parse.fun.php';
	include_once M_ROOT."./include/upload.cls.php";
	include_once M_ROOT."./include/fields.fun.php";
	include_once M_ROOT."./include/fields.cls.php";
	empty($forward) && $forward = M_REFERER;
	$forwardstr = "forward=".urlencode($forward);
	if_siteclosed($sid);
	$memberid && message(lang('please dont repeat register')."&nbsp;  &nbsp;[<a href=\"login.php?action=logout\">".lang('logout')."</a>]");
	$registerclosed && message(empty($regclosedreason) ? lang('defaultregclosedreason') : mnl2br($regclosedreason));
	if(!submitcheck('register')){
		if($enable_pptin && !empty($pptin_url) && $pptin_register){
			$url = $pptin_url.$pptin_register;
			$url .= (strpos($url,'?') ? '&' : '?').'forward='.rawurlencode($forward);
			header('location:'.$url);
			exit;
		}
		if(empty($sptpls['register'])) header('location:adminm.php?action=register');
		$temparr = array();
		$temparr['forward'] = rawurlencode($forward);
		mexit(template('register',$temparr));
	}else{
		$mname = addslashes(trim(stripslashes($mname)));
		$password = trim($password);
		$password2 = trim($password2);
		$email = trim($email);
		if(!regcode_pass('register',empty($regcode) ? '' : trim($regcode))) message(lang('regcode error'),M_REFERER);
		if(strlen($mname) < 3 || strlen($mname) > 15) message(lang('member cname length illegal'),M_REFERER);
		$guestexp = '\xA1\xA1|^Guest|^\xD3\xCE\xBF\xCD|\xB9\x43\xAB\xC8';
		$censorexp = '/^('.str_replace(array('\\*', "\r\n", ' '), array('.*', '|', ''), preg_quote(($censoruser = trim($censoruser)), '/')).')$/i';
		if(preg_match("/^\s*$|^c:\\con\\con$|[%,\*\"\s\t\<\>\&]|$guestexp/is",$mname) || ($censoruser && @preg_match($censorexp,$mname))){
			message(lang('member cname illegal'),M_REFERER);
		}
		if($db->result_one("SELECT COUNT(*) FROM {$tblprefix}purchases WHERE mid='$memberid' AND oid='0'")) message(lang('member cname repeat'),M_REFERER);
		if($password != $password2) message(lang('notsamepwd'),M_REFERER);
		if(!$password || strlen($password) > 15 || $password != addslashes($password)){
			message(lang('member password illegal'),M_REFERER);
		}
		$md5_password = md5($password);
		if(!$email || !isemail($email)) message(lang('member email illegal'),M_REFERER);
		if($enable_uc){
			include_once M_ROOT.'./include/ucenter/config.inc.php';
			include_once M_ROOT.'./uc_client/client.php';
			$uid = uc_user_register($mname, $password, $email);
			if($uid <= 0) {
				if($uid == -1) {
					message(lang('member cname illegal'));
				} elseif($uid == -2) {
					message(lang('member cname illegal'));
				} elseif($uid == -3) {
					message(lang('member cname repeat'));
				} elseif($uid == -4) {
					message(lang('member email illegal'));
				} elseif($uid == -5) {
					message(lang('member email illegal'));
				} elseif($uid == -6) {
					message(lang('member email illegal'));
				} else {
					message(lang('error operate'));
				}
			}
		}
		$mchid = empty($mchid) ? 1 : max(1,intval($mchid));
		if(!($mchannel = $mchannels[$mchid])) message(lang('confirmchoose member channel'));
		$autocheck = $mchannel['autocheck'];
		$mainarr = $subarr = $customarr = array();
		$mainarr['mname'] = $mname;
		$mainarr['password'] = $md5_password;
		$mainarr['email'] = $email;
		$mainarr['mtcid'] = empty($mtcid) ? 1 : $mtcid;
		foreach($grouptypes as $gtid => $grouptype){
			if(!$grouptype['mode']){//会员手动
				$mainarr["grouptype$gtid"] = empty(${"grouptype$gtid"}) ? 0 : ${"grouptype$gtid"};
			}
		}
		foreach($currencys as $crid => $currency){
			if($currency['available'] && $currency['initial']) $mainarr["currency$crid"] = $currency['initial'];
		}
		$mainarr['checked'] = $autocheck == 1 ? 1 : 0;
		$mainarr['regip'] = $onlineip;
		$mainarr['regdate'] = $timestamp;
		$c_upload = new cls_upload;	
		$mfields = fields_order(read_cache('mfields',$mchid));
		$a_field = new cls_field;
		foreach($mfields as $k => $field){
			if(!$field['issystem'] && !$field['isfunc']){
				$a_field->init();
				$a_field->field = read_cache('mfield',$mchid,$k);
				$a_field->deal();
				if(!empty($a_field->error)){
					$c_upload->rollback();
					message($a_field->error,M_REFERER);
				}
				${$field['tbl'].'arr'}[$k] = $a_field->newvalue;
			}
		}
		unset($a_field);
		$newuser = new cls_userinfo;
		if(!$newuser->useradd($mainarr['mname'],$mainarr['password'],$mainarr['email'],$mchid)) message(lang('member register failed'),M_REFERER);
		$mid = $newuser->infos['mid'];
		if($autocheck == 2){
			$confirmid = random(6);
			$confirmstr = "$timestamp\t2\t$confirmid";
			$subarr['confirmstr'] = $confirmstr;
		}
		foreach(array('main','sub','custom') as $var){
			foreach(${$var.'arr'} as $k => $v) $newuser->updatefield($k,$v,$var);
		}
		$newuser->updatedb();
		unset($newuser);
		if($autocheck == 1){
			msetcookie('userauth', authcode("$md5_password\t$mid",'ENCODE'),31536000);
		}elseif($autocheck == 2){
			mailto($email,'member_active_subject','member_active_content',array('mid' => $mid,'mname' => $mname,'confirmid' => $confirmid));
		}
		if($enable_pptout && !empty($pptout_file) && !empty($pptout_url)){
			$action = 'login';
			$username = $mname;
			include M_ROOT.'./include/pptout/'.$pptout_file.'.php';
			header('location:'.$url);
			exit;
		}
		message(lang(!$autocheck ? 'userchecking' : ($autocheck == 2 ? 'emailactiving' : 'member register succeed')),$forward);
	}

}
?>