<?php
/*
Name:QQ登录接口
Version:1.0
Author:乐酷
Author QQ:3178156778
Author Url:shouq.sujie520.cn
*/
if (!isset($app_res) or !is_array($app_res)) out(100); //如果需要调用应用配置请先判断是否加载app配置
if ($app_res['logon_state'] == 'n') out(103, $app_res['logon_notice'], $app_res); //判断是否可登录
if ($app_res['logon_way'] == 1) out(163, $app_res); //不是账号登录方式不允许使用当前操作
$openid = isset($data_arr['openid']) && !empty($data_arr['openid']) ? purge($data_arr['openid']) : out(157, $app_res); //请输入openid
$access_token = isset($data_arr['access_token']) && !empty($data_arr['access_token']) ? purge($data_arr['access_token']) : out(157, $app_res); //请输入access_token
$qqappid = isset($data_arr['qqappid']) && !empty($data_arr['qqappid']) ? purge($data_arr['qqappid']) : out(161, $app_res); //请输入QQ互联ID
$reg_in = isset($data_arr['markcode']) ? purge($data_arr['markcode']) : ''; //机器码
$inv = isset($data_arr['inv']) ? intval($data_arr['inv']) : 0; //邀请人
$get_data = ['access_token' => $access_token, 'openid' => $openid, 'oauth_consumer_key' => $qqappid, 'format' => 'json'];
$qq_data = http_gets('https://graph.qq.com/user/get_user_info', $get_data);
if (!$qq_data) out(162, $app_res);
$json_qq = json_decode($qq_data, true);
if (isset($json_qq['errcode'])) out(158, $app_res); //错误的身份信息
$name = $json_qq['nickname'];
$pic = $json_qq['figureurl_qq'];
$token = md5($openid . getcode(32) . time() . $appid); //生成TOKEN
$res_qq = Db::table('user')->where(['openid_qq' => $openid, 'appid' => $appid])->find(); //false
if ($res_qq) {
if ($app_res['logon_check_in'] == 'y' && $reg_in == '') out(112, $app_res); //判断是否验证机器码
if ($res_qq['ban'] > time() || $res_user['ban'] == 999999999) out(114, $res_qq['ban_notice'], $app_res); //账号被禁用
if ($app_res['mode'] == 'y') {
$vip = $res_qq['vip'];
} else {
$vip = '999999999';
} //判断当前收费模式
$user_info = [
'id' => $res_qq['id'],
'pic' => get_pic($res_qq['pic']),
'name' => $res_qq['name'],
'vip' => $vip,
'fen' => $res_qq['fen']
];
$res_user['id'] = $res_qq['id'];
} else {
$reg_ipon = $app_res['reg_ipon']; //获取IP重复注册间隔
if ($reg_ipon > 0) {
$ip_time = time() - $reg_ipon * 3600;
$res = Db::table('user')->where(['appid' => $appid, 'reg_ip', getIp()])->where('reg_time', '>', $ip_time)->find(); //寻找相同IP
if ($res) out(117, $app_res); //该IP已注册
}
$reg_inon = $app_res['reg_inon']; //获取机器码重复注册间隔
if ($reg_inon > 0) {
$in_time = time() - $reg_inon * 3600;
$res = Db::table('user')->where(['appid' => $appid, 'reg_in', $reg_in])->where('reg_time', '>', $in_time)->find(); //寻找相同机器码
if ($res) out(117, $app_res); //该机器码已注册
}
if ($inv > 0) { //邀请人事件
$res = Db::table('user')->where('id', $inv)->where('appid', $appid)->find(); //查询邀请者ID
if (!$res) out(118, $app_res); //邀请人已存在
$inv_award = $app_res['inv_award']; //奖励类型
$inv_award_num = $app_res['inv_award_num']; //邀请奖励数
if ($inv_award_num > 0) {
if ($inv_award == 'vip' && $res['vip'] != 999999999) { //奖励类型是VIP
if ($res['vip'] > time()) { //VIP没有过期
$vip = $res['vip'] + 3600 * $inv_award_num;
} else { //VIP已过期
$vip = time() + 3600 * $inv_award_num;
}
$inv_res = Db::table('user')->where('id', $inv)->update(['vip' => $vip]); //更新邀请人VIP数据
if ($inv_res) {
if (defined('USER_LOG') && USER_LOG == 1) {
Db::table('log')->add(['uid' => $inv, 'type' => 'inv', 'status' => 200, 'time' => time(), 'ip' => getIp(), 'vip' => $inv_award_num, 'appid' => $appid]);
} //记录日志
} else {
if (defined('USER_LOG') && USER_LOG == 1) {
Db::table('log')->add(['uid' => $inv, 'type' => 'inv', 'status' => 201, 'time' => time(), 'ip' => getIp(), 'appid' => $appid]);
} //记录日志
}
} else if ($inv_award == 'fen') {
$fen = $res['fen'] + $inv_award_num;
$inv_res = Db::table('user')->where('id', $inv)->update(['fen' => $fen]); //更新邀请人积分数据
if ($inv_res) {
if (defined('USER_LOG') && USER_LOG == 1) {
Db::table('log')->add(['uid' => $inv, 'type' => 'inv', 'status' => 200, 'time' => time(), 'ip' => getIp(), 'fen' => $inv_award_num, 'appid' => $appid]);
} //记录日志
} else {
if (defined('USER_LOG') && USER_LOG == 1) {
Db::table('log')->add(['uid' => $inv, 'type' => 'inv', 'status' => 201, 'time' => time(), 'ip' => getIp(), 'appid' => $appid]);
} //记录日志
}
}
}
}
$reg_award = $app_res['reg_award']; //奖励类型
$reg_award_num = $app_res['reg_award_num']; //注册奖励
if ($reg_award_num > 0) {
if ($reg_award == 'vip') {
$vips = time() + 60 * $reg_award_num;
$add_res = Db::table('user')->add(['name' => $name, 'pic' => $pic, 'openid_qq' => $openid, 'vip' => $vips, 'inv' => $inv, 'reg_in' => $markcode, 'reg_ip' => getIp(), 'reg_time' => time(), 'appid' => $appid]);
} else {
$fens = $reg_award_num;
$add_res = Db::table('user')->add(['name' => $name, 'pic' => $pic, 'openid_qq' => $openid, 'fen' => $fens, 'inv' => $inv, 'reg_in' => $markcode, 'reg_ip' => getIp(), 'reg_time' => time(), 'appid' => $appid]);
}
} else {
$add_res = Db::table('user')->add(['name' => $name, 'pic' => $pic, 'openid_qq' => $openid, 'inv' => $inv, 'reg_in' => $markcode, 'reg_ip' => getIp(), 'reg_time' => time(), 'appid' => $appid]);
}
if ($add_res) {
$res_user['id'] = (int)$add_res;
if ($app_res['mode'] == 'y') {
$vip = isset($vips) ? $vips : 0;
} else {
$vip = '999999999';
} //判断当前收费模式
$fen = isset($fens) ? $fens : 0;
$user_info = [
'id' => $res_user['id'],
'pic' => $pic,
'name' => $name,
'vip' => $vip,
'fen' => $fen
];
} else {
out(201, '注册失败', $app_res);
}
}
$res_num = Db::table('user_logon')->where(['uid' => $res_user['id']])->count();
if ($res_num >= $app_res['logon_num']) { //已超过最大登录数
$res = Db::table('user_logon')->where(['uid' => $res_user['id'], 'log_in' => $markcode])->find(); //寻找相同设备
if ($res) { //找到相同设备的登录信息
$res_update = Db::table('user_logon')->where('id', $res['id'])->update(['token' => $token, 'log_time' => time(), 'log_ip' => getIp(), 'log_in' => $markcode, 'last_t' => time()]);
if ($res_update) {
if (defined('USER_LOG') && USER_LOG == 1) {
Db::table('log')->add(['uid' => $res_user['id'], 'type' => $act, 'time' => time(), 'ip' => getIp(), 'appid' => $appid]);
} //记录日志
$data = ['token' => $token, 'info' => $user_info];
out(200, $data, $app_res);
} else {
if (defined('USER_LOG') && USER_LOG == 1) {
Db::table('log')->add(['uid' => $res_user['id'], 'type' => $act, 'status' => 201, 'time' => time(), 'ip' => getIp(), 'appid' => $appid]);
} //记录日志
out(201, '登录失败', $app_res);
}
} else { //没有找到相同登录信息
$res_logon = Db::table('user_logon')->where(['uid' => $res_user['id']])->order('last_t asc')->find();
if ($app_res['logon_check_in'] == 'y') { //需要验证机器码
if ($app_res['logon_check_t'] <= 0) { //不限制换绑次数
$res_update = Db::table('user_logon')->where('id', $res_logon['id'])->update(['token' => $token, 'log_time' => time(), 'log_ip' => getIp(), 'log_in' => $markcode, 'last_t' => time()]);
if ($res_update) {
if (defined('USER_LOG') && USER_LOG == 1) {
Db::table('log')->add(['uid' => $res_user['id'], 'type' => $act, 'time' => time(), 'ip' => getIp(), 'appid' => $appid]);
} //记录日志
$data = ['token' => $token, 'info' => $user_info];
out(200, $data, $app_res);
} else {
if (defined('USER_LOG') && USER_LOG ==
TVBOX二次开发代码
需积分: 0 47 浏览量
更新于2023-07-23
1
收藏 155.1MB ZIP 举报
【TVBOX二次开发代码】是针对智能电视盒子(TVBOX)进行定制化开发的技术文档和源码集合。在这个项目中,开发者通常会基于现有的TVBOX系统进行功能扩展、界面优化或者服务集成,以满足特定用户需求或商业目标。"如意后台"可能是这个项目的核心管理平台,用于控制和管理TVBOX上的应用程序和服务。
我们看到一个名为`s.hyyqq.com 源码tvbox教程.docx`的文件,这很可能是开发指南或教程,详细介绍了如何对TVBOX进行二次开发,可能涵盖了如UI设计、功能添加、服务接口对接等内容。开发者需要阅读并理解这份文档,以掌握TVBOX开发的基本流程和规范。
`itvbox_20221010_095638.sql.gz`和`itvbox_20221010_095638.sql`是数据库文件,很可能包含了如意后台的数据库结构和数据。通过这些文件,开发者可以了解到系统的数据模型,包括用户信息、设置、应用状态等关键数据。可能需要使用SQL工具来解压和查看这些数据,以便更好地理解和调试系统。
`iTvBox.zip`可能是一个包含TVBOX应用程序的压缩包,里面可能有项目的源代码、资源文件、配置文件等。开发者需要解压并分析这些代码,以了解其工作原理,并在此基础上进行修改和扩展。
`houta易如意.zip`和`houtai.zip`可能是如意后台的前端部分,包含了用户界面的HTML、CSS和JavaScript文件。开发者需要熟悉前端技术,如HTML5、CSS3和JavaScript,才能对这些文件进行修改,以改变用户界面的外观和交互。
`库.zip`很可能包含了一些开发过程中用到的第三方库或框架,这些库可能用于处理网络请求、数据解析、UI组件等功能。理解这些库的作用和使用方法,对于项目的开发和维护至关重要。
`支付中心不显示不回调 搞了我200`这可能是开发者在开发过程中遇到的一个问题,可能涉及到支付接口的集成和回调处理。这表明系统中有一个支付功能,但可能存在显示异常或回调机制未正常工作的问题,需要开发者进行调试和修复。
这个TVBOX二次开发项目涵盖了从后端数据库设计、前端UI实现到支付功能集成等多个方面,涉及到的技术包括但不限于数据库管理、Web开发、移动应用开发、第三方库的使用以及API接口的对接。对于开发者来说,这是一个全面的实践项目,能够提升他们在整个软件开发生命周期中的技能。
zombiecoder
- 粉丝: 9
- 资源: 1
最新资源
- 基于vue的订餐小程序springboot-微信小程序毕业项目,适合计算机毕-设、实训项目、大作业学习.rar
- 基于ssm选课系统+ssm-微信小程序毕业项目,适合计算机毕-设、实训项目、大作业学习.rar
- 基于Vue.js的校园防疫微信小程序开发+ssm-微信小程序毕业项目,适合计算机毕-设、实训项目、大作业学习.rar
- 基于微信微服务架构的汽车租赁系统的设计与实现_zaxzu-微信小程序毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 基于uniapp+springboot的校园失物招领系统的设计与实现--论文pf-微信小程序毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- Python 实现 BO-KNN(贝叶斯优化 K 近邻算法)进行分类预测的示例(含完整的程序,GUI设计和代码详解)
- 基于微信的高校教务管理系统设计与实现springboot-微信小程序毕业项目,适合计算机毕-设、实训项目、大作业学习.rar
- 基于vue和微信小程序的校园自助打印系统+springboot-微信小程序毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- SSA-RF和RF麻雀算法优化随机森林多特征分类预测(Matlab) 1.运行环境Matlab2018b及以上; 2.麻雀算法优化随机森林树木棵树和森林深度,输入12个特征,分四类,可视化展示分类准确
- 基于微信小程序的仓储管理系统_r275i--论文-微信小程序毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 基于微信的乐室预约小程序+ssm-微信小程序毕业项目,适合计算机毕-设、实训项目、大作业学习.rar
- 基于微信小程序的超市购物系统代码--论文pf-微信小程序毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 基于微信小程序的付费自习室管理系统-微信小程序毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 基于微信小程序的短文写作竞赛管理系统_r653y--论文-微信小程序毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 基于微信的追星小程序+ssm-微信小程序毕业项目,适合计算机毕-设、实训项目、大作业学习.rar
- 基于微信的设备故障报修管理系统设计与实现+ssm-微信小程序毕业项目,适合计算机毕-设、实训项目、大作业学习.rar