php 接口升级,PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [6] 版本升级接口开发...
判定 app 是否需要加密:通过 app 表中的 status 字段来判定,加密的字符串为 app 表中的 key 字段。
在获取的客户端和服务器端(数据库表中相应字段)的版本号不一致时,返回 data['is_upload'] = 1 提示是否升级;一致时返回 data['is_upload'] = 0 不提示升级。
common.php 中 getApp 方法可以添加缓存(静态/Redis等)缓存。
common.php 处理接口公共业务
/**
* 处理接口公共业务
*/
require_once('./response.php');
require_once('./db.php');
class Common {
public $params;
public $app;
public function check() {
$this->params['app_id'] = $appId = isset($_POST['app_id']) ? $_POST['app_id'] : '';
$this->params['version_id'] = $versionId = isset($_POST['version_id']) ? $_POST['version_id'] : '';
$this->params['version_mini'] = $versionMini = isset($_POST['version_mini']) ? $_POST['version_mini'] : '';
$this->params['did'] = $did = isset($_POST['did']) ? $_POST['did'] : '';
$this->params['encrypt_did'] = $encryptDid = isset($_POST['encrypt_did']) ? $_POST['encrypt_did'] : '';
if(!is_numeric($appId) || !is_numeric($versionId)) {
return Response::show(401, '参数不合法');
}
// 判断APP是否需要加密
$this->app = $this->getApp($appId);
if(!$this->app) {
return Response::show(402, 'app_id不存在');
}
if($this->app['is_encryption'] && $encryptDid != md5($did . $this->app['key'])) {
return Response::show(403, '没有该权限');
}
}
public function getApp($id) {
$sql = "select *
from `app`
where id = " . $id ."
and status = 1
limit 1";
$connect = Db::getInstance()->connect();
$result = mysql_query($sql, $connect);
return mysql_fetch_assoc($result);
}
public function getversionUpgrade($appId) {
$sql = "select *
from `version_upgrade`
where app_id = " . $appId ."
and status = 1
limit 1";
$connect = Db::getInstance()->connect();
$result = mysql_query($sql, $connect);
return mysql_fetch_assoc($result);
}
/**
* 根据图片大小组装相应图片
* @param string $imageUrl
* @param string $size
*/
public function setImage($imageUrl, $size) {
if(!$imageUrl) {
return '';
}
if(!$size) {
return $imageUrl;
}
$type = substr($imageUrl, strrpos($imageUrl, '.'));
if(!$type) {
return '';
}
$path = substr($imageUrl, 0, strrpos($imageUrl, '.'));
return $path . '_' . $size . $type;
}
}
init.php 处理版本升级
require_once('./common.php');
class Init extends Common {
public function index() {
$this->check();
// 获取版本升级信息
$versionUpgrade = $this->getversionUpgrade($this->app['id']);
if($versionUpgrade) {
if($versionUpgrade['type'] && $this->params['version_id'] < $versionUpgrade['version_id']) {
$versionUpgrade['is_upload'] = $versionUpgrade['type'];
}else {
$versionUpgrade['is_upload'] = 0;
}
return Response::show(200, '版本升级信息获取成功', $versionUpgrade);
} else {
return Response::show(400, '版本升级信息获取失败');
}
}
}
$init = new Init();
$init->index();
init.html 测试接口
Document
APP类型:
版本号:
php 接口升级,PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [6] 版本升级接口开发...相关推荐
- 【vn.py学习笔记(二)】vn.py底层接口 学习笔记
[vn.py学习笔记(二)]vn.py底层接口 学习笔记 1 CTP API的工作原理 1.1 CTP介绍 1.2 API功能介绍 1.3 CTP API文件 1.4 API 通用规则 2 CTP A ...
- Slicer学习笔记(二十一)slicer的python接口说明
Slicer学习笔记(二十一)slicer的python接口说明 1.python接口 1.python接口 slicer package Submodules slicer.ScriptedLoad ...
- 零基础学习Java开发,这些学习笔记送给你
因为Java具备很多特点,并且在企业中被广泛应用为此很多小伙伴选择学习Java基础开发,但是零基础学习Java技术开发需要我们制定Java学习路线图对于我们之后的学习会非常有帮助. 零基础学习Java ...
- PHPWeb开发入门体验学习笔记
PHPWeb开发入门体验学习笔记 4 一.PHP web应用开发须知 1.入门要点 程序员三个阶段:码农(速成技能)->工程师(长期知识)->专家(研究论文) 编程三要素:声明变量(系统. ...
- BOLT.NET 学习笔记(一) 开篇 用.net winform 快速开发 炫酷的界面
BOLT.NET 学习笔记(一) 开篇 用.net winform 快速开发 炫酷的界面 bolt 基本介绍 Bolt界面引擎是迅雷公司从2009年开始开发的第四代界面库.迅雷7是首个采用该引擎成功开 ...
- iOS App Clips学习笔记
一.什么是App Clip? App Clip是一个App的轻量版,用来提供一些用户所需功能,我们可以把它看成苹果的小程序.它不需要下载就直接能打开.这样即可达到不下载完整版APP便可体验APP的部分 ...
- Harmony 开发基础——Harmony 学习笔记
Harmony 开发基础--Harmony 学习笔记 前言 最近跟着3.6 HAR | 3.6 HAR | EBG2021CCHW1100031 课程页面 | Huawei iLearningX学习了 ...
- 《疯狂前端开发讲义jQuery+Angular+Bootstrap前端开发实践》学习笔记
<疯狂前端开发讲义jQuery+Angular+Bootstrap前端开发实践>学习笔记 二〇一九年二月十三日星期三2时28分54秒 前提:本书适合有初步HTML.CSS.JavaScri ...
- 人力资源开发与管理学习笔记
人力资源开发与管理学习笔记 授课:石志夫 资源:人.财.物.信息. 基亨尼:国家实际统治权在于行政, 行政推进力在于人事, 行政领导权=人权+财权+决策权 ×××:政治路线确定之后,干部就是决定的因素 ...
- Polyworks脚本开发学习笔记(十六)-用C#进行Polyworks二次开发
Polyworks脚本开发学习笔记(十六)-用C#进行Polyworks二次开发 Polyworks支持C#二次开发,用对应的SDK文档试着做一下开发样例. 新建一个C#项目,在解决方案中右键添加引用 ...
最新文章
- 一起走进计算机视觉的世界
- 玩转Python大数据分析 《Python for Data Analysis》的读书笔记-第05页
- element-ui中用el-dialog+el-table+el-pagination实现文件默认选中且在分页的条件下有记忆功能...
- 五子棋人机对战_原生JS+Canvas实现五子棋游戏
- 【Leetcode | 235】 235. 二叉搜索树的最近公共祖先
- 【bzoj2806】 Ctsc2012—Cheat
- linux 运行库 编译参数,Linux/CentOS 升级C基本运行库CLIBC的注意事项(当想解决GLIBC_2.x找不到的编译问题)...
- 宋宝华:Linux的任督二脉——进程调度和内存管理
- Mybatis什么时候用resultMap,什么时候用resultType
- 深度学习——词汇embedded、Beam Search
- 学习树莓派的几个推荐站点
- 数据可视化之设计经验分享:轻松三步教你学会制作数据可视化大屏思路
- Zero Requiem
- e1000网卡驱动小结
- ZZULI - 小新三连(二):小新在努力
- Delphi 2005 发布!
- Core Techniques And Algorithms In Game Programming
- 小程序 mathjs渲染公式_地平线:黎明时分中的云渲染技术
- 从微信的成功看移动AppUI设计的精髓
- 基于javaweb的医院分诊挂号住院管理系统(java+springboot+freemarker+mysql)