thinkphp3.2 后台登陆、退出

知识共享许可协议 版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons
public function login () {
    if (IS_POST) {
        $role_phone = I('username');//获取用户输入的账号
        $role_password = strtolower(I('password'));//获取用户输入的密码

        empty($role_phone) && $this->jsonResponse(false, '手机号不能为空');//判断用户是否输入账号
        empty($role_password) && $this->jsonResponse(false, '密码不能为空');//判断用户是否输入密码

        $map = [];
        $map['role_phone'] = $role_phone;
        $map['role_password'] = $role_password;

        $result = M('role_user')->where($map)->find();//通过用户输入的账号密码,进行查询
        if (!$result) {//判断数据库里面是否有用户输入的账号密码
            $this->jsonResponse(false, '账号或密码有误, 请重新输入');
        }
        else {
            $result['status'] == 1 && $this->jsonResponse(false, '账号已禁用, 请联系管理员');

            $result['last_login_ip'] = $_SERVER["HTTP_X_REAL_IP"];//用户登陆的ip地址
            $result['last_login_time'] = date('Y-n-j H:i:s', $_SERVER['REQUEST_TIME']);//用户登陆的时间
            $res = M('role_user')->where('user_id = ' . $result['user_id'])->save($result);//将用户的ipi地址和登陆时间更新到表中

            if ($res) {//判断用户的信息是否入库,如果入库则保存在redis中
                $key = 'admin_' . $result['user_id'] . '_' . sha1($result['role_phone']);
                $value = [];
                $value['user_id'] = $result['user_id'];
                $value['user_name'] = $result['role_phone'];

                $role = M('role')->field('is_admin, name, role_name, status')->where('id = ' . $result['role_id'])->find();
                $role['status'] == 1 && $this->jsonResponse(false, '该部门已禁用, 请联系管理员');

                $value['is_admin'] = $role['is_admin'];
                $value['role'] = $role['role_name'];
                $value['role_name'] = $role['name'];

                $this->redis_set($key, $value, 60 * 60);
            }

            $this->jsonResponse(true, '登录成功', ['U-Admin-Token' => $key]);
        }
    }
    else {
        $this->jsonResponse(false, '无效请求');
    }
}

/*
 * 退出功能
 */
public function logout () {
    $user_info = $this->user_info;
    $res = M('role_user')->where('user_id = ' . $user_info['user_id'])->save(['last_logout_time' => date('Y-n-j H:i:s', $_SERVER['REQUEST_TIME'])]);
    if ($res) {
        $this->redis_del($_SERVER['HTTP_U_ADMIN_TOKEN']);
        $this->user_info = null;
    }

    $this->jsonResponse(true, '退出成功');
}

/*
 * 获取用户信息
 */
public function get_user_info () {

    $user_info = $this->user_info;
    if ($user_info) {
        $user = M('user')->field('wx_headimage')->where('id = ' . $user_info['user_id'])->find();
        $user_info['headimage'] = $user['wx_headimage'];

        $this->jsonResponse(true, 'success', ['user_info' => $user_info]);
    }

}
/*
 * 将数据存放在reids中
 * */
public function redis_set ($key, $value, $expires = 60 * 60 * 24 * 7)
{
    $redis = new \Redis();
    $redis->connect(C('REDIS_HOST'), C('REDIS_PORT'));
    $data = json_encode($value, JSON_UNESCAPED_UNICODE);
    $redis->set($key, $data);
    if ($expires > 0)
        $redis->expire($key, $expires);
}


/*
 * 将存放在redis中的数据删除
 * */
public function redis_del ($key)
{
    $redis = new \Redis();
    $redis->connect(C('REDIS_HOST'), C('REDIS_PORT'));
    $redis->del($key);
}


/*
 * 将数据以json格式返回
 * */
public function jsonResponse ($success = true, $message = '', $data = null, $code = 0)
{
    $response = [];

    $response['success'] = $success;

    if (!$message || empty($message)) {
        $response['message'] = '成功';
    }
    else {
        $response['message'] = $message;
    }

    if ($success) {
        $response['data'] = $data;
    }
    else {
        $code == 0 && $code = 50000;
    }

    $response['code'] = $code;

    die(json_encode($response, JSON_UNESCAPED_UNICODE));
}

猜你喜欢

转载自blog.csdn.net/AngryBananas/article/details/94733766