|
|
|
|
<?php
|
|
|
|
|
// +----------------------------------------------------------------------
|
|
|
|
|
// | OneThink [ WE CAN DO IT JUST THINK IT ]
|
|
|
|
|
// +----------------------------------------------------------------------
|
|
|
|
|
// | Copyright (c) 2013 http://www.onethink.cn All rights reserved.
|
|
|
|
|
// +----------------------------------------------------------------------
|
|
|
|
|
// | Author: 麦当苗儿 <zuojiazi@vip.qq.com> <http://www.zjzit.cn>
|
|
|
|
|
// +----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
namespace Home\Controller;
|
|
|
|
|
use User\Api\UserApi;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 用户控制器
|
|
|
|
|
* 包括用户中心,用户登录及注册
|
|
|
|
|
*/
|
|
|
|
|
class UserController extends HomeController {
|
|
|
|
|
|
|
|
|
|
/* 用户中心首页 */
|
|
|
|
|
public function index(){
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* 注册页面 */
|
|
|
|
|
public function register($username = '', $password = '', $repassword = '', $email = '', $verify = ''){
|
|
|
|
|
if(!C('USER_ALLOW_REGISTER')){
|
|
|
|
|
$this->error('注册已关闭');
|
|
|
|
|
}
|
|
|
|
|
if(IS_POST){ //注册用户
|
|
|
|
|
/* 检测验证码 */
|
|
|
|
|
if(!check_verify($verify)){
|
|
|
|
|
$this->error('验证码输入错误!');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* 检测密码 */
|
|
|
|
|
if($password != $repassword){
|
|
|
|
|
$this->error('密码和重复密码不一致!');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* 调用注册接口注册用户 */
|
|
|
|
|
$User = new UserApi;
|
|
|
|
|
$uid = $User->register($username, $password, $email);
|
|
|
|
|
if(0 < $uid){ //注册成功
|
|
|
|
|
//TODO: 发送验证邮件
|
|
|
|
|
$this->success('注册成功!',U('login'));
|
|
|
|
|
} else { //注册失败,显示错误信息
|
|
|
|
|
$this->error($this->showRegError($uid));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} else { //显示注册表单
|
|
|
|
|
$this->display();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* 登录页面 */
|
|
|
|
|
public function login($username = '', $password = '', $verify = ''){
|
|
|
|
|
if(IS_POST){ //登录验证
|
|
|
|
|
/* 检测验证码 */
|
|
|
|
|
if(!check_verify($verify)){
|
|
|
|
|
$this->error('验证码输入错误!');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* 调用UC登录接口登录 */
|
|
|
|
|
$user = new UserApi;
|
|
|
|
|
$uid = $user->login($username, $password);
|
|
|
|
|
if(0 < $uid){ //UC登录成功
|
|
|
|
|
/* 登录用户 */
|
|
|
|
|
$Member = D('Member');
|
|
|
|
|
if($Member->login($uid)){ //登录用户
|
|
|
|
|
//TODO:跳转到登录前页面
|
|
|
|
|
$this->success('登录成功!',U('Home/Index/index'));
|
|
|
|
|
} else {
|
|
|
|
|
$this->error($Member->getError());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} else { //登录失败
|
|
|
|
|
switch($uid) {
|
|
|
|
|
case -1: $error = '用户不存在或被禁用!'; break; //系统级别禁用
|
|
|
|
|
case -2: $error = '密码错误!'; break;
|
|
|
|
|
default: $error = '未知错误!'; break; // 0-接口参数错误(调试阶段使用)
|
|
|
|
|
}
|
|
|
|
|
$this->error($error);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} else { //显示登录表单
|
|
|
|
|
$this->display();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* 退出登录 */
|
|
|
|
|
public function logout(){
|
|
|
|
|
if(is_login()){
|
|
|
|
|
D('Member')->logout();
|
|
|
|
|
$this->success('退出成功!', U('User/login'));
|
|
|
|
|
} else {
|
|
|
|
|
$this->redirect('User/login');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* 验证码,用于登录和注册 */
|
|
|
|
|
public function verify(){
|
|
|
|
|
$verify = new \Think\Verify();
|
|
|
|
|
$verify->codeSet = '0123456789';
|
|
|
|
|
$verify->entry(1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取用户注册错误信息
|
|
|
|
|
* @param integer $code 错误编码
|
|
|
|
|
* @return string 错误信息
|
|
|
|
|
*/
|
|
|
|
|
private function showRegError($code = 0){
|
|
|
|
|
switch ($code) {
|
|
|
|
|
case -1: $error = '用户名长度必须在16个字符以内!'; break;
|
|
|
|
|
case -2: $error = '用户名被禁止注册!'; break;
|
|
|
|
|
case -3: $error = '用户名被占用!'; break;
|
|
|
|
|
case -4: $error = '密码长度必须在6-30个字符之间!'; break;
|
|
|
|
|
case -5: $error = '邮箱格式不正确!'; break;
|
|
|
|
|
case -6: $error = '邮箱长度必须在1-32个字符之间!'; break;
|
|
|
|
|
case -7: $error = '邮箱被禁止注册!'; break;
|
|
|
|
|
case -8: $error = '邮箱被占用!'; break;
|
|
|
|
|
case -9: $error = '手机格式不正确!'; break;
|
|
|
|
|
case -10: $error = '手机被禁止注册!'; break;
|
|
|
|
|
case -11: $error = '手机号被占用!'; break;
|
|
|
|
|
default: $error = '未知错误';
|
|
|
|
|
}
|
|
|
|
|
return $error;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 修改密码提交
|
|
|
|
|
* @author huajie <banhuajie@163.com>
|
|
|
|
|
*/
|
|
|
|
|
public function profile(){
|
|
|
|
|
if ( !is_login() ) {
|
|
|
|
|
$this->error( '您还没有登录',U('User/login') );
|
|
|
|
|
}
|
|
|
|
|
if ( IS_POST ) {
|
|
|
|
|
//获取参数
|
|
|
|
|
$uid = is_login();
|
|
|
|
|
$password = I('post.old');
|
|
|
|
|
$repassword = I('post.repassword');
|
|
|
|
|
$data['password'] = I('post.password');
|
|
|
|
|
empty($password) && $this->error('请输入原密码');
|
|
|
|
|
empty($data['password']) && $this->error('请输入新密码');
|
|
|
|
|
empty($repassword) && $this->error('请输入确认密码');
|
|
|
|
|
|
|
|
|
|
if($data['password'] !== $repassword){
|
|
|
|
|
$this->error('您输入的新密码与确认密码不一致');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$Api = new UserApi();
|
|
|
|
|
$res = $Api->updateInfo($uid, $password, $data);
|
|
|
|
|
if($res['status']){
|
|
|
|
|
$this->success('修改密码成功!');
|
|
|
|
|
}else{
|
|
|
|
|
$this->error($res['info']);
|
|
|
|
|
}
|
|
|
|
|
}else{
|
|
|
|
|
$this->display();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|