public function register($member_group_id = 2, $username = null, $password = null, $email = null, $mobile = null) { if (IS_POST) { $data = array('member_group_id' => $member_group_id, 'username' => $username, 'password' => $password, 'email' => $email, 'mobile' => $mobile, 'account' => create_account(), 'create_time' => NOW_TIME, 'update_time' => NOW_TIME); //验证手机 //if(empty($data['mobile'])) unset($data['mobile']); $user = D('Member'); /* 添加用户 */ if ($user->create($data)) { $user->password = ainiku_ucenter_md5($user->password); $user->member_group_id = $member_group_id; $result = $user->add(); //return $this->$uid ? '注册成功' : '注册失败'; //0-未知错误,大于0-注册成功 if (0 < $result) { $this->success('注册成功', U('login')); } else { $this->error('注册失败'); } } else { return $this->error($user->getError()); } } else { if (IS_AJAX) { $this->display('ajaxregister'); } else { $this->display(); } } }
public function login($username = null, $password = null, $verify = null, $autologin = false) { if (IS_POST || $autologin) { /* 检测验证码 TODO: */ if (!check_verify($verify) && !$autologin) { $this->error('验证码输入错误!'); } //自动判断用户名是哪个字段的 $map[get_account_type($username)] = $username; $map['password'] = ainiku_ucenter_md5($password); $map['status'] = 1; //$map['member_group_id']=1; $map['is_adminlogin'] = 1; $user = D('MemberView')->where($map)->find(); if (empty($user)) { //登录失败 cookie('__uid__', null); return $autologin ? false : $this->error('用户名或密码错误!'); } else { //登陆成功 /* 记录登录SESSION和COOKIES */ $auth = array('uid' => $user['member_id'], 'username' => $user['username'], 'last_login_time' => $user['update_time']); session('user_auth', $auth); session('uinfo', $user); session('user_auth_sign', data_auth_sign($auth)); //更新用户登录信息 $this->updateLogin($user['member_id']); //把用户密码加密保存到cookie中 if (!$autologin) { $u['u'] = ainiku_encrypt($username); $u['p'] = ainiku_encrypt($password); //如果有验证码的话就再次设置记录时间cookie $a = I('post.remember'); $b = 0; switch ($a) { case 1: $b = 24 * 3600; break; case 2: $b = 24 * 3600 * 7; break; case 3: $b = 24 * 3600 * 30; break; default: $b = -1; } cookie('__uid__', $u, $b); } return $autologin ? $user['member_id'] : $this->success('登录成功!', U($user['admin_index'], array('mainmenu' => 'true'))); } } else { if (is_login() || $this->autologin()) { $user = session('uinfo'); redirect(U($user['admin_index'], array('mainmenu' => 'true'))); } else { $this->display(); } } }
/** *前台用户判断cookie自动登陆 */ function autologin() { $user = cookie('token'); if (empty($user)) { return 0; } else { $username = ainiku_decrypt($user['u']); $password = ainiku_ucenter_md5(ainiku_decrypt($user['p'])); $map['uesrname'] = $username; $map['password'] = $password; $info = M('Member')->where($map)->find(); if (empty($info)) { return 0; } else { /* 记录登录SESSION和COOKIES */ $auth = array('uid' => $info['member_id'], 'username' => $info['username'], 'last_login_time' => $info['last_login_time']); session('user_auth', $auth); session('uinfo', $info); session('user_auth_sign', data_auth_sign($auth)); define('UID', $info['member_id']); $uid = $info['member_id']; $ip = get_client_ip(); $location = get_iplocation($ip); $data = array('member_id' => $uid, 'update_time' => NOW_TIME, 'last_login_ip' => $ip, 'last_login_adr' => $location['country'] . $location['area']); M('Member')->where("member_id={$uid}")->setInc('login'); M('Member')->save($data); //保存用户登陆日志 M('MemberLog')->add(array('member_id' => $uid, 'ip' => $Ip, 'adr' => $location['country'] . $location['area'], 'create_time' => NOW_TIME)); return $uid; } } }
/** *邮箱激活 **/ public function emailactivate($yz = '') { $uinfo = $this->uinfo; if (empty($yz)) { $yzm = ainiku_ucenter_md5($uinfo['username'] . $uinfo['password'] . date('Y/m/d H:i:s')); $url = C('WEBDOMIN') . U("Member/emailactivate", array('yz' => $yzm)); $str = <<<eot \t\t此链接10分钟内有效 \t\t<a target="_blank" href="{$url}">点击以激活邮箱</a>或复制这个链接并打开 \t\t{$url} eot; $result = send_mail(array('to' => $uinfo['email'], 'toname' => $uinfo['email'], 'subject' => C('WEB_SITE_TITLE') . '的邮件验证', 'fromname' => C('WEB_SITE_TITLE'), 'body' => $str . date('Y/m/d H:i:s'))); if ($result) { S('emailactivate' . UID, $yzm, 600); $this->success('激活邮件已经发送成功!'); } else { $this->error('邮件发送失败!'); } } else { if ($yz === S('emailactivate' . UID)) { S('emailactivate' . UID, null); M('Member')->where("member_id=" . UID)->save(array('email_activate' => 1)); $this->success('邮箱验证成功!', U('Member/portal')); } else { $this->success('邮箱验证失败!', U('Member/portal')); } } }
/** * 修改密码初始化 * @author huajie <*****@*****.**> */ public function updatepwd($member_id = '') { if (IS_POST) { $model = D('Member'); if ($model->create()) { $model->password = ainiku_ucenter_md5($model->password); $result = $model->save(); if (0 < $result) { $this->success(L('_UPDATE_SUCCESS_')); } else { $this->error('密码相同,没有更改'); } } else { $this->error($this->showRegError($model->geterror())); } } $member_id = empty($member_id) ? UID : $member_id; $data = M('Member')->find($member_id); $this->data = $data; $this->meta_title = '修改密码'; $this->display(); }
/** * 用户登录认证 * @param string $username 用户名 * @param string $password 用户密码 * @param integer $type 用户名类型 (1-用户名,2-邮箱,3-手机,4-UID) * @return integer 登录成功-用户ID,登录失败-错误编号 */ public function login($username, $password, $type = 1) { $map = array(); // switch ($type) { // case 1: // $map['username'] = $username; // break; // case 2: // $map['email'] = $username; // break; // case 3: // $map['mobile'] = $username; // break; // case 4: // $map['id'] = $username; // break; // default: // return 0; //参数错误 // } $map[get_account_type($username)] = $username; $jin = __DB_PREFIX__ . "member_group as a on " . __DB_PREFIX__ . "member.member_group_id=a.member_group_id"; $field = "*," . __DB_PREFIX__ . "member.status as status"; $user = $this->field($field)->where($map)->join($jin)->find(); if (is_array($user) && $user['status'] === '1' && $user['member_group_id'] == C('ALLOW_GROUP')) { /* 验证用户密码 */ $md5pas = ainiku_ucenter_md5($password); if ($md5pas === $user['password']) { /* 记录登录SESSION和COOKIES */ $auth = array('uid' => $user['member_id'], 'username' => $user['username'], 'last_login_time' => $user['update_time']); session('user_auth', $auth); session('uinfo', $user); session('user_auth_sign', data_auth_sign($auth)); //更新用户登录信息 $this->updateLogin($user['member_id']); return $user['member_id']; //登录成功,返回用户ID } else { return -2; //密码错误 } } else { return -1; // '用户不存在或被禁用!' } }
/** * 修改密码初始化 * @author huajie <*****@*****.**> */ public function updatepwd($member_id = '') { if (IS_POST) { $model = D('Member'); $password = I('post.password'); $repassword = I('post.repassword'); if (empty($password)) { $this->error('密码不能为空!'); } if ($password != $repassword) { $this->error('两次输入的密码不一样!'); } if ($model->create()) { $model->password = ainiku_ucenter_md5($model->password); $model->update_time = NOW_TIME; $result = $model->save(); if (0 < $result) { A('Public')->logout(true); $this->success('密码更新成功!请重新登陆!', U('Public/login')); } else { $this->error('密码相同,没有更改'); } } else { $this->error($model->geterror()); } } $member_id = empty($member_id) ? UID : $member_id; $data = M('Member')->find($member_id); $this->data = $data; $this->meta_title = '修改密码'; $this->display(); }