码迷,mamicode.com
首页 > Web开发 > 详细

oneThink用户模型

时间:2016-03-13 23:43:27      阅读:454      评论:0      收藏:0      [点我收藏+]

标签:

1. User\Model\UcenterMemberModel.class.php

  1 <?php
  2 // +----------------------------------------------------------------------
  3 // | OneThink [ WE CAN DO IT JUST THINK IT ]
  4 // +----------------------------------------------------------------------
  5 // | Copyright (c) 2013 http://www.onethink.cn All rights reserved.
  6 // +----------------------------------------------------------------------
  7 // | Author: 麦当苗儿 <zuojiazi@vip.qq.com> <http://www.zjzit.cn>
  8 // +----------------------------------------------------------------------
  9 namespace User\Model;
 10 use Think\Model;
 11 /**
 12  * 会员模型
 13  */
 14 class UcenterMemberModel extends Model{
 15     /**
 16      * 数据表前缀
 17      * @var string
 18      */
 19     protected $tablePrefix = UC_TABLE_PREFIX;
 20 
 21     /**
 22      * 数据库连接
 23      * @var string
 24      */
 25     protected $connection = UC_DB_DSN;
 26 
 27     /* 用户模型自动验证 */
 28     protected $_validate = array(
 29         /* 验证用户名 */
 30         array(‘username‘, ‘1,30‘, -1, self::EXISTS_VALIDATE, ‘length‘), //用户名长度不合法
 31         array(‘username‘, ‘checkDenyMember‘, -2, self::EXISTS_VALIDATE, ‘callback‘), //用户名禁止注册
 32         array(‘username‘, ‘‘, -3, self::EXISTS_VALIDATE, ‘unique‘), //用户名被占用
 33 
 34         /* 验证密码 */
 35         array(‘password‘, ‘6,30‘, -4, self::EXISTS_VALIDATE, ‘length‘), //密码长度不合法
 36 
 37         /* 验证邮箱 */
 38         array(‘email‘, ‘email‘, -5, self::EXISTS_VALIDATE), //邮箱格式不正确
 39         array(‘email‘, ‘1,32‘, -6, self::EXISTS_VALIDATE, ‘length‘), //邮箱长度不合法
 40         array(‘email‘, ‘checkDenyEmail‘, -7, self::EXISTS_VALIDATE, ‘callback‘), //邮箱禁止注册
 41         array(‘email‘, ‘‘, -8, self::EXISTS_VALIDATE, ‘unique‘), //邮箱被占用
 42 
 43         /* 验证手机号码 */
 44         array(‘mobile‘, ‘//‘, -9, self::EXISTS_VALIDATE), //手机格式不正确 TODO:
 45         array(‘mobile‘, ‘checkDenyMobile‘, -10, self::EXISTS_VALIDATE, ‘callback‘), //手机禁止注册
 46         array(‘mobile‘, ‘‘, -11, self::EXISTS_VALIDATE, ‘unique‘), //手机号被占用
 47     );
 48 
 49     /* 用户模型自动完成 */
 50     protected $_auto = array(
 51         array(‘password‘, ‘think_ucenter_md5‘, self::MODEL_BOTH, ‘function‘, UC_AUTH_KEY),
 52         array(‘reg_time‘, NOW_TIME, self::MODEL_INSERT),
 53         array(‘reg_ip‘, ‘get_client_ip‘, self::MODEL_INSERT, ‘function‘, 1),
 54         array(‘update_time‘, NOW_TIME),
 55         array(‘status‘, ‘getStatus‘, self::MODEL_BOTH, ‘callback‘),
 56     );
 57 
 58     /**
 59      * 检测用户名是不是被禁止注册
 60      * @param  string $username 用户名
 61      * @return boolean          ture - 未禁用,false - 禁止注册
 62      */
 63     protected function checkDenyMember($username){
 64         return true; //TODO: 暂不限制,下一个版本完善
 65     }
 66 
 67     /**
 68      * 检测邮箱是不是被禁止注册
 69      * @param  string $email 邮箱
 70      * @return boolean       ture - 未禁用,false - 禁止注册
 71      */
 72     protected function checkDenyEmail($email){
 73         return true; //TODO: 暂不限制,下一个版本完善
 74     }
 75 
 76     /**
 77      * 检测手机是不是被禁止注册
 78      * @param  string $mobile 手机
 79      * @return boolean        ture - 未禁用,false - 禁止注册
 80      */
 81     protected function checkDenyMobile($mobile){
 82         return true; //TODO: 暂不限制,下一个版本完善
 83     }
 84 
 85     /**
 86      * 根据配置指定用户状态
 87      * @return integer 用户状态
 88      */
 89     protected function getStatus(){
 90         return true; //TODO: 暂不限制,下一个版本完善
 91     }
 92 
 93     /**
 94      * 注册一个新用户
 95      * @param  string $username 用户名
 96      * @param  string $password 用户密码
 97      * @param  string $email    用户邮箱
 98      * @param  string $mobile   用户手机号码
 99      * @return integer          注册成功-用户信息,注册失败-错误编号
100      */
101     public function register($username, $password, $email, $mobile){
102         $data = array(
103             ‘username‘ => $username,
104             ‘password‘ => $password,
105             ‘email‘    => $email,
106             ‘mobile‘   => $mobile,
107         );
108 
109         //验证手机
110         if(empty($data[‘mobile‘])) unset($data[‘mobile‘]);
111 
112         /* 添加用户 */
113         if($this->create($data)){
114             $uid = $this->add();
115             return $uid ? $uid : 0; //0-未知错误,大于0-注册成功
116         } else {
117             return $this->getError(); //错误详情见自动验证注释
118         }
119     }
120 
121     /**
122      * 用户登录认证
123      * @param  string  $username 用户名
124      * @param  string  $password 用户密码
125      * @param  integer $type     用户名类型 (1-用户名,2-邮箱,3-手机,4-UID)
126      * @return integer           登录成功-用户ID,登录失败-错误编号
127      */
128     public function login($username, $password, $type = 1){
129         $map = array();
130         switch ($type) {
131             case 1:
132                 $map[‘username‘] = $username;
133                 break;
134             case 2:
135                 $map[‘email‘] = $username;
136                 break;
137             case 3:
138                 $map[‘mobile‘] = $username;
139                 break;
140             case 4:
141                 $map[‘id‘] = $username;
142                 break;
143             default:
144                 return 0; //参数错误
145         }
146 
147         /* 获取用户数据 */
148         $user = $this->where($map)->find();
149         if(is_array($user) && $user[‘status‘]){
150             /* 验证用户密码 */
151             if(think_ucenter_md5($password, UC_AUTH_KEY) === $user[‘password‘]){
152                 $this->updateLogin($user[‘id‘]); //更新用户登录信息
153                 return $user[‘id‘]; //登录成功,返回用户ID
154             } else {
155                 return -2; //密码错误
156             }
157         } else {
158             return -1; //用户不存在或被禁用
159         }
160     }
161 
162     /**
163      * 获取用户信息
164      * @param  string  $uid         用户ID或用户名
165      * @param  boolean $is_username 是否使用用户名查询
166      * @return array                用户信息
167      */
168     public function info($uid, $is_username = false){
169         $map = array();
170         if($is_username){ //通过用户名获取
171             $map[‘username‘] = $uid;
172         } else {
173             $map[‘id‘] = $uid;
174         }
175 
176         $user = $this->where($map)->field(‘id,username,email,mobile,status‘)->find();
177         if(is_array($user) && $user[‘status‘] = 1){
178             return array($user[‘id‘], $user[‘username‘], $user[‘email‘], $user[‘mobile‘]);
179         } else {
180             return -1; //用户不存在或被禁用
181         }
182     }
183 
184     /**
185      * 检测用户信息
186      * @param  string  $field  用户名
187      * @param  integer $type   用户名类型 1-用户名,2-用户邮箱,3-用户电话
188      * @return integer         错误编号
189      */
190     public function checkField($field, $type = 1){
191         $data = array();
192         switch ($type) {
193             case 1:
194                 $data[‘username‘] = $field;
195                 break;
196             case 2:
197                 $data[‘email‘] = $field;
198                 break;
199             case 3:
200                 $data[‘mobile‘] = $field;
201                 break;
202             default:
203                 return 0; //参数错误
204         }
205 
206         return $this->create($data) ? 1 : $this->getError();
207     }
208 
209     /**
210      * 更新用户登录信息
211      * @param  integer $uid 用户ID
212      */
213     protected function updateLogin($uid){
214         $data = array(
215             ‘id‘              => $uid,
216             ‘last_login_time‘ => NOW_TIME,
217             ‘last_login_ip‘   => get_client_ip(1),
218         );
219         $this->save($data);
220     }
221 
222     /**
223      * 更新用户信息
224      * @param int $uid 用户id
225      * @param string $password 密码,用来验证
226      * @param array $data 修改的字段数组
227      * @return true 修改成功,false 修改失败
228      * @author huajie <banhuajie@163.com>
229      */
230     public function updateUserFields($uid, $password, $data){
231         if(empty($uid) || empty($password) || empty($data)){
232             $this->error = ‘参数错误!‘;
233             return false;
234         }
235 
236         //更新前检查用户密码
237         if(!$this->verifyUser($uid, $password)){
238             $this->error = ‘验证出错:密码不正确!‘;
239             return false;
240         }
241 
242         //更新用户信息
243         $data = $this->create($data);
244         if($data){
245             return $this->where(array(‘id‘=>$uid))->save($data);
246         }
247         return false;
248     }
249 
250     /**
251      * 验证用户密码
252      * @param int $uid 用户id
253      * @param string $password_in 密码
254      * @return true 验证成功,false 验证失败
255      * @author huajie <banhuajie@163.com>
256      */
257     protected function verifyUser($uid, $password_in){
258         $password = $this->getFieldById($uid, ‘password‘);
259         if(think_ucenter_md5($password_in, UC_AUTH_KEY) === $password){
260             return true;
261         }
262         return false;
263     }
264 
265 }

 

2. User/Api/UserApi.class.php

  1 <?php
  2 // +----------------------------------------------------------------------
  3 // | OneThink [ WE CAN DO IT JUST THINK IT ]
  4 // +----------------------------------------------------------------------
  5 // | Copyright (c) 2013 http://www.onethink.cn All rights reserved.
  6 // +----------------------------------------------------------------------
  7 // | Author: 麦当苗儿 <zuojiazi@vip.qq.com> <http://www.zjzit.cn>
  8 // +----------------------------------------------------------------------
  9 
 10 namespace User\Api;
 11 use User\Api\Api;
 12 use User\Model\UcenterMemberModel;
 13 
 14 class UserApi extends Api{
 15     /**
 16      * 构造方法,实例化操作模型
 17      */
 18     protected function _init(){
 19         $this->model = new UcenterMemberModel();
 20     }
 21 
 22     /**
 23      * 注册一个新用户
 24      * @param  string $username 用户名
 25      * @param  string $password 用户密码
 26      * @param  string $email    用户邮箱
 27      * @param  string $mobile   用户手机号码
 28      * @return integer          注册成功-用户信息,注册失败-错误编号
 29      */
 30     public function register($username, $password, $email, $mobile = ‘‘){
 31         return $this->model->register($username, $password, $email, $mobile);
 32     }
 33 
 34     /**
 35      * 用户登录认证
 36      * @param  string  $username 用户名
 37      * @param  string  $password 用户密码
 38      * @param  integer $type     用户名类型 (1-用户名,2-邮箱,3-手机,4-UID)
 39      * @return integer           登录成功-用户ID,登录失败-错误编号
 40      */
 41     public function login($username, $password, $type = 1){
 42         return $this->model->login($username, $password, $type);
 43     }
 44 
 45     /**
 46      * 获取用户信息
 47      * @param  string  $uid         用户ID或用户名
 48      * @param  boolean $is_username 是否使用用户名查询
 49      * @return array                用户信息
 50      */
 51     public function info($uid, $is_username = false){
 52         return $this->model->info($uid, $is_username);
 53     }
 54 
 55     /**
 56      * 检测用户名
 57      * @param  string  $field  用户名
 58      * @return integer         错误编号
 59      */
 60     public function checkUsername($username){
 61         return $this->model->checkField($username, 1);
 62     }
 63 
 64     /**
 65      * 检测邮箱
 66      * @param  string  $email  邮箱
 67      * @return integer         错误编号
 68      */
 69     public function checkEmail($email){
 70         return $this->model->checkField($email, 2);
 71     }
 72 
 73     /**
 74      * 检测手机
 75      * @param  string  $mobile  手机
 76      * @return integer         错误编号
 77      */
 78     public function checkMobile($mobile){
 79         return $this->model->checkField($mobile, 3);
 80     }
 81 
 82     /**
 83      * 更新用户信息
 84      * @param int $uid 用户id
 85      * @param string $password 密码,用来验证
 86      * @param array $data 修改的字段数组
 87      * @return true 修改成功,false 修改失败
 88      * @author huajie <banhuajie@163.com>
 89      */
 90     public function updateInfo($uid, $password, $data){
 91         if($this->model->updateUserFields($uid, $password, $data) !== false){
 92             $return[‘status‘] = true;
 93         }else{
 94             $return[‘status‘] = false;
 95             $return[‘info‘] = $this->model->getError();
 96         }
 97         return $return;
 98     }
 99 
100 }

 

3. Home/Controller/UserController.class.php

  1 <?php
  2 // +----------------------------------------------------------------------
  3 // | OneThink [ WE CAN DO IT JUST THINK IT ]
  4 // +----------------------------------------------------------------------
  5 // | Copyright (c) 2013 http://www.onethink.cn All rights reserved.
  6 // +----------------------------------------------------------------------
  7 // | Author: 麦当苗儿 <zuojiazi@vip.qq.com> <http://www.zjzit.cn>
  8 // +----------------------------------------------------------------------
  9 
 10 namespace Home\Controller;
 11 use User\Api\UserApi;
 12 
 13 /**
 14  * 用户控制器
 15  * 包括用户中心,用户登录及注册
 16  */
 17 class UserController extends HomeController {
 18 
 19     /* 用户中心首页 */
 20     public function index(){
 21         
 22     }
 23 
 24     /* 注册页面 */
 25     public function register($username = ‘‘, $password = ‘‘, $repassword = ‘‘, $email = ‘‘, $verify = ‘‘){
 26         if(!C(‘USER_ALLOW_REGISTER‘)){
 27             $this->error(‘注册已关闭‘);
 28         }
 29         if(IS_POST){ //注册用户
 30             /* 检测验证码 */
 31             if(!check_verify($verify)){
 32                 $this->error(‘验证码输入错误!‘);
 33             }
 34 
 35             /* 检测密码 */
 36             if($password != $repassword){
 37                 $this->error(‘密码和重复密码不一致!‘);
 38             }            
 39 
 40             /* 调用注册接口注册用户 */
 41             $User = new UserApi;
 42             $uid = $User->register($username, $password, $email);
 43             if(0 < $uid){ //注册成功
 44                 //TODO: 发送验证邮件
 45                 $this->success(‘注册成功!‘,U(‘login‘));
 46             } else { //注册失败,显示错误信息
 47                 $this->error($this->showRegError($uid));
 48             }
 49 
 50         } else { //显示注册表单
 51             $this->display();
 52         }
 53     }
 54 
 55     /* 登录页面 */
 56     public function login($username = ‘‘, $password = ‘‘, $verify = ‘‘){
 57         if(IS_POST){ //登录验证
 58             /* 检测验证码 */
 59             if(!check_verify($verify)){
 60                 $this->error(‘验证码输入错误!‘);
 61             }
 62 
 63             /* 调用UC登录接口登录 */
 64             $user = new UserApi;
 65             $uid = $user->login($username, $password);
 66             if(0 < $uid){ //UC登录成功
 67                 /* 登录用户 */
 68                 $Member = D(‘Member‘);
 69                 if($Member->login($uid)){ //登录用户
 70                     //TODO:跳转到登录前页面
 71                     $this->success(‘登录成功!‘,U(‘Home/Index/index‘));
 72                 } else {
 73                     $this->error($Member->getError());
 74                 }
 75 
 76             } else { //登录失败
 77                 switch($uid) {
 78                     case -1: $error = ‘用户不存在或被禁用!‘; break; //系统级别禁用
 79                     case -2: $error = ‘密码错误!‘; break;
 80                     default: $error = ‘未知错误!‘; break; // 0-接口参数错误(调试阶段使用)
 81                 }
 82                 $this->error($error);
 83             }
 84 
 85         } else { //显示登录表单
 86             $this->display();
 87         }
 88     }
 89 
 90     /* 退出登录 */
 91     public function logout(){
 92         if(is_login()){
 93             D(‘Member‘)->logout();
 94             $this->success(‘退出成功!‘, U(‘User/login‘));
 95         } else {
 96             $this->redirect(‘User/login‘);
 97         }
 98     }
 99 
100     /* 验证码,用于登录和注册 */
101     public function verify(){
102         $verify = new \Think\Verify();
103         $verify->entry(1);
104     }
105 
106     /**
107      * 获取用户注册错误信息
108      * @param  integer $code 错误编码
109      * @return string        错误信息
110      */
111     private function showRegError($code = 0){
112         switch ($code) {
113             case -1:  $error = ‘用户名长度必须在16个字符以内!‘; break;
114             case -2:  $error = ‘用户名被禁止注册!‘; break;
115             case -3:  $error = ‘用户名被占用!‘; break;
116             case -4:  $error = ‘密码长度必须在6-30个字符之间!‘; break;
117             case -5:  $error = ‘邮箱格式不正确!‘; break;
118             case -6:  $error = ‘邮箱长度必须在1-32个字符之间!‘; break;
119             case -7:  $error = ‘邮箱被禁止注册!‘; break;
120             case -8:  $error = ‘邮箱被占用!‘; break;
121             case -9:  $error = ‘手机格式不正确!‘; break;
122             case -10: $error = ‘手机被禁止注册!‘; break;
123             case -11: $error = ‘手机号被占用!‘; break;
124             default:  $error = ‘未知错误‘;
125         }
126         return $error;
127     }
128 
129 
130     /**
131      * 修改密码提交
132      * @author huajie <banhuajie@163.com>
133      */
134     public function profile(){
135         if ( !is_login() ) {
136             $this->error( ‘您还没有登陆‘,U(‘User/login‘) );
137         }
138         if ( IS_POST ) {
139             //获取参数
140             $uid        =   is_login();
141             $password   =   I(‘post.old‘);
142             $repassword = I(‘post.repassword‘);
143             $data[‘password‘] = I(‘post.password‘);
144             empty($password) && $this->error(‘请输入原密码‘);
145             empty($data[‘password‘]) && $this->error(‘请输入新密码‘);
146             empty($repassword) && $this->error(‘请输入确认密码‘);
147 
148             if($data[‘password‘] !== $repassword){
149                 $this->error(‘您输入的新密码与确认密码不一致‘);
150             }
151 
152             $Api = new UserApi();
153             $res = $Api->updateInfo($uid, $password, $data);
154             if($res[‘status‘]){
155                 $this->success(‘修改密码成功!‘);
156             }else{
157                 $this->error($res[‘info‘]);
158             }
159         }else{
160             $this->display();
161         }
162     }
163 
164 }

 

4. Admin/Controller/UserController.class.php

  1 <?php
  2 // +----------------------------------------------------------------------
  3 // | OneThink [ WE CAN DO IT JUST THINK IT ]
  4 // +----------------------------------------------------------------------
  5 // | Copyright (c) 2013 http://www.onethink.cn All rights reserved.
  6 // +----------------------------------------------------------------------
  7 // | Author: 麦当苗儿 <zuojiazi@vip.qq.com> <http://www.zjzit.cn>
  8 // +----------------------------------------------------------------------
  9 
 10 namespace Admin\Controller;
 11 use User\Api\UserApi;
 12 
 13 /**
 14  * 后台用户控制器
 15  * @author 麦当苗儿 <zuojiazi@vip.qq.com>
 16  */
 17 class UserController extends AdminController {
 18 
 19     /**
 20      * 用户管理首页
 21      * @author 麦当苗儿 <zuojiazi@vip.qq.com>
 22      */
 23     public function index(){
 24         $nickname       =   I(‘nickname‘);
 25         $map[‘status‘]  =   array(‘egt‘,0);
 26         if(is_numeric($nickname)){
 27             $map[‘uid|nickname‘]=   array(intval($nickname),array(‘like‘,‘%‘.$nickname.‘%‘),‘_multi‘=>true);
 28         }else{
 29             $map[‘nickname‘]    =   array(‘like‘, ‘%‘.(string)$nickname.‘%‘);
 30         }
 31 
 32         $list   = $this->lists(‘Member‘, $map);
 33         int_to_string($list);
 34         $this->assign(‘_list‘, $list);
 35         $this->meta_title = ‘用户信息‘;
 36         $this->display();
 37     }
 38 
 39     /**
 40      * 修改昵称初始化
 41      * @author huajie <banhuajie@163.com>
 42      */
 43     public function updateNickname(){
 44         $nickname = M(‘Member‘)->getFieldByUid(UID, ‘nickname‘);
 45         $this->assign(‘nickname‘, $nickname);
 46         $this->meta_title = ‘修改昵称‘;
 47         $this->display(‘updatenickname‘);
 48     }
 49 
 50     /**
 51      * 修改昵称提交
 52      * @author huajie <banhuajie@163.com>
 53      */
 54     public function submitNickname(){
 55         //获取参数
 56         $nickname = I(‘post.nickname‘);
 57         $password = I(‘post.password‘);
 58         empty($nickname) && $this->error(‘请输入昵称‘);
 59         empty($password) && $this->error(‘请输入密码‘);
 60 
 61         //密码验证
 62         $User   =   new UserApi();
 63         $uid    =   $User->login(UID, $password, 4);
 64         ($uid == -2) && $this->error(‘密码不正确‘);
 65 
 66         $Member =   D(‘Member‘);
 67         $data   =   $Member->create(array(‘nickname‘=>$nickname));
 68         if(!$data){
 69             $this->error($Member->getError());
 70         }
 71 
 72         $res = $Member->where(array(‘uid‘=>$uid))->save($data);
 73 
 74         if($res){
 75             $user               =   session(‘user_auth‘);
 76             $user[‘username‘]   =   $data[‘nickname‘];
 77             session(‘user_auth‘, $user);
 78             session(‘user_auth_sign‘, data_auth_sign($user));
 79             $this->success(‘修改昵称成功!‘);
 80         }else{
 81             $this->error(‘修改昵称失败!‘);
 82         }
 83     }
 84 
 85     /**
 86      * 修改密码初始化
 87      * @author huajie <banhuajie@163.com>
 88      */
 89     public function updatePassword(){
 90         $this->meta_title = ‘修改密码‘;
 91         $this->display(‘updatepassword‘);
 92     }
 93 
 94     /**
 95      * 修改密码提交
 96      * @author huajie <banhuajie@163.com>
 97      */
 98     public function submitPassword(){
 99         //获取参数
100         $password   =   I(‘post.old‘);
101         empty($password) && $this->error(‘请输入原密码‘);
102         $data[‘password‘] = I(‘post.password‘);
103         empty($data[‘password‘]) && $this->error(‘请输入新密码‘);
104         $repassword = I(‘post.repassword‘);
105         empty($repassword) && $this->error(‘请输入确认密码‘);
106 
107         if($data[‘password‘] !== $repassword){
108             $this->error(‘您输入的新密码与确认密码不一致‘);
109         }
110 
111         $Api    =   new UserApi();
112         $res    =   $Api->updateInfo(UID, $password, $data);
113         if($res[‘status‘]){
114             $this->success(‘修改密码成功!‘);
115         }else{
116             $this->error($res[‘info‘]);
117         }
118     }
119 
120     /**
121      * 用户行为列表
122      * @author huajie <banhuajie@163.com>
123      */
124     public function action(){
125         //获取列表数据
126         $Action =   M(‘Action‘)->where(array(‘status‘=>array(‘gt‘,-1)));
127         $list   =   $this->lists($Action);
128         int_to_string($list);
129         // 记录当前列表页的cookie
130         Cookie(‘__forward__‘,$_SERVER[‘REQUEST_URI‘]);
131 
132         $this->assign(‘_list‘, $list);
133         $this->meta_title = ‘用户行为‘;
134         $this->display();
135     }
136 
137     /**
138      * 新增行为
139      * @author huajie <banhuajie@163.com>
140      */
141     public function addAction(){
142         $this->meta_title = ‘新增行为‘;
143         $this->assign(‘data‘,null);
144         $this->display(‘editaction‘);
145     }
146 
147     /**
148      * 编辑行为
149      * @author huajie <banhuajie@163.com>
150      */
151     public function editAction(){
152         $id = I(‘get.id‘);
153         empty($id) && $this->error(‘参数不能为空!‘);
154         $data = M(‘Action‘)->field(true)->find($id);
155 
156         $this->assign(‘data‘,$data);
157         $this->meta_title = ‘编辑行为‘;
158         $this->display(‘editaction‘);
159     }
160 
161     /**
162      * 更新行为
163      * @author huajie <banhuajie@163.com>
164      */
165     public function saveAction(){
166         $res = D(‘Action‘)->update();
167         if(!$res){
168             $this->error(D(‘Action‘)->getError());
169         }else{
170             $this->success($res[‘id‘]?‘更新成功!‘:‘新增成功!‘, Cookie(‘__forward__‘));
171         }
172     }
173 
174     /**
175      * 会员状态修改
176      * @author 朱亚杰 <zhuyajie@topthink.net>
177      */
178     public function changeStatus($method=null){
179         $id = array_unique((array)I(‘id‘,0));
180         if( in_array(C(‘USER_ADMINISTRATOR‘), $id)){
181             $this->error("不允许对超级管理员执行该操作!");
182         }
183         $id = is_array($id) ? implode(‘,‘,$id) : $id;
184         if ( empty($id) ) {
185             $this->error(‘请选择要操作的数据!‘);
186         }
187         $map[‘uid‘] =   array(‘in‘,$id);
188         switch ( strtolower($method) ){
189             case ‘forbiduser‘:
190                 $this->forbid(‘Member‘, $map );
191                 break;
192             case ‘resumeuser‘:
193                 $this->resume(‘Member‘, $map );
194                 break;
195             case ‘deleteuser‘:
196                 $this->delete(‘Member‘, $map );
197                 break;
198             default:
199                 $this->error(‘参数非法‘);
200         }
201     }
202 
203     public function add($username = ‘‘, $password = ‘‘, $repassword = ‘‘, $email = ‘‘){
204         if(IS_POST){
205             /* 检测密码 */
206             if($password != $repassword){
207                 $this->error(‘密码和重复密码不一致!‘);
208             }
209 
210             /* 调用注册接口注册用户 */
211             $User   =   new UserApi;
212             $uid    =   $User->register($username, $password, $email);
213             if(0 < $uid){ //注册成功
214                 $user = array(‘uid‘ => $uid, ‘nickname‘ => $username, ‘status‘ => 1);
215                 if(!M(‘Member‘)->add($user)){
216                     $this->error(‘用户添加失败!‘);
217                 } else {
218                     $this->success(‘用户添加成功!‘,U(‘index‘));
219                 }
220             } else { //注册失败,显示错误信息
221                 $this->error($this->showRegError($uid));
222             }
223         } else {
224             $this->meta_title = ‘新增用户‘;
225             $this->display();
226         }
227     }
228 
229     /**
230      * 获取用户注册错误信息
231      * @param  integer $code 错误编码
232      * @return string        错误信息
233      */
234     private function showRegError($code = 0){
235         switch ($code) {
236             case -1:  $error = ‘用户名长度必须在16个字符以内!‘; break;
237             case -2:  $error = ‘用户名被禁止注册!‘; break;
238             case -3:  $error = ‘用户名被占用!‘; break;
239             case -4:  $error = ‘密码长度必须在6-30个字符之间!‘; break;
240             case -5:  $error = ‘邮箱格式不正确!‘; break;
241             case -6:  $error = ‘邮箱长度必须在1-32个字符之间!‘; break;
242             case -7:  $error = ‘邮箱被禁止注册!‘; break;
243             case -8:  $error = ‘邮箱被占用!‘; break;
244             case -9:  $error = ‘手机格式不正确!‘; break;
245             case -10: $error = ‘手机被禁止注册!‘; break;
246             case -11: $error = ‘手机号被占用!‘; break;
247             default:  $error = ‘未知错误‘;
248         }
249         return $error;
250     }
251 
252 }

 

oneThink用户模型

标签:

原文地址:http://www.cnblogs.com/zhien/p/5273998.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!