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')." [<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); } } ?>