Ejemplo n.º 1
0
 /**
  * 用户注册
  */
 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();
     }
 }