/** * 用户注册 */ public function register() { $this->visitor->is_login && $this->redirect('user/index'); if (IS_POST) { //方式 $type = $this->_post('type', 'trim', 'reg'); if ($type == 'reg') { //验证 $agreement = $this->_post('agreement'); !$agreement && $this->error(L('agreement_failed')); $captcha = $this->_post('captcha', 'trim'); if (session('captcha') != md5($captcha)) { $this->error(L('captcha_failed')); } } $username = $this->_post('username', 'trim'); $email = $this->_post('email', 'trim'); $password = $this->_post('password', 'trim'); $repassword = $this->_post('repassword', 'trim'); if ($password != $repassword) { $this->error(L('inconsistent_password')); //确认密码 } $gender = $this->_post('gender', 'intval', '0'); //用户禁止 $ipban_mod = D('ipban'); $ipban_mod->clear(); //清除过期数据 $is_ban = $ipban_mod->where("(type='name' AND name='" . $username . "') OR (type='email' AND name='" . $email . "')")->count(); $is_ban && $this->error(L('register_ban')); //连接用户中心 $passport = $this->_user_server(); //注册 $uid = $passport->register($username, $password, $email, $gender); !$uid && $this->error($passport->get_error()); //第三方帐号绑定 if (cookie('user_bind_info')) { $user_bind_info = object_to_array(cookie('user_bind_info')); $oauth = new oauth($user_bind_info['type']); $bind_info = array('ftx_uid' => $uid, 'ftx_username' => $username, 'keyid' => $user_bind_info['keyid'], 'bind_info' => $user_bind_info['bind_info']); $oauth->bindByData($bind_info); $this->_save_avatar($uid, $user_bind_info['temp_avatar']); cookie('user_bind_info', NULL); } $tag_arg = array('uid' => $uid, 'uname' => $username, 'action' => 'register'); tag('register_end', $tag_arg); //邀请注册奖励 $union_date = array('uid' => $uid, 'username' => $username); D('user')->union_reg($union_date); //登陆 $this->visitor->login($uid); //登陆完成 $tag_arg = array('uid' => $uid, 'uname' => $username, 'action' => 'login'); tag('login_end', $tag_arg); //同步登陆 $synlogin = $passport->synlogin($uid); $this->success(L('register_successe') . $synlogin, U('user/index')); } else { //关闭注册 if (!C('ftx_reg_status')) { $this->error(C('ftx_reg_closed_reason')); } $this->_config_seo(array('title' => ' 注册 - ' . C('ftx_site_name'))); $this->display(); } }