1-开发共享版APP(搭建指南)-快速搭建到自己的服务器

该APP安装包下载链接:

http://www.mnif.cn/appapk/IotDevelopmentVersion/20190730/app-debug.apk

或者扫描二维码下载

APP源码获取方式:(请阅读宝贝说明)

此APP建立在基础篇,升级篇,数据篇和安全篇.只有把这些篇章全部学过才能看得懂源码!

https://item.taobao.com/item.htm?spm=a2oq0.12575281.0.0.70471debVGb9G8&ft=t&id=569295486025

如果用户获得了源码,想快速的应用到自己的服务器上,请参看此系列文章

一,搭建配置MQTT服务器

1,基础篇中,安装配置MQTT服务器

2,安全篇中,为MQTT配置安全连接

https://www.cnblogs.com/yangfengwu/category/1451836.html

二,安装配置数据库

1,数据篇中,安装数据库

https://www.cnblogs.com/yangfengwu/category/1410242.html

请在云端数据库建一个数据库名字为login的数据库,名字为register的表格,表格中的字段名字如下

三,搭建配置Apache 服务器

1,升级篇中,安装配置Apache 服务器

https://www.cnblogs.com/yangfengwu/category/1383497.html

2,微信小程序篇中,

https://www.cnblogs.com/yangfengwu/category/1462689.html

四,云服务器配置解析登录注册的php程序

1,网页根目录建一个名字为  LoginAndRegistration 的文件夹

ChangePassword.php

<?php

//http://IP地址/LoginAndRegistration/ChangePassword.php?Phone=13275429560&Password=25
//https://域名/LoginAndRegistration/ChangePassword.php?Phone=13275429560&Password=25
//PHP规定所有的变量前头必须加$
//明确一点,PHP的echo都是http返回的数据

$servername = "localhost";//链接本地数据库
$username = "root";//root账户
$password = "qwer123456";//密码,根据自己的修改
$dbname = "login";//链接的数据库名字
$TableName = "register";//链接的表格的名字

function groupSelect($from, $where1, $condition1,$value1, $condition,$where2, $condition2, $value2) {
    $sql = "select *from ".$from." where ".$where1.$condition1."‘".$value1."‘".$condition ." ".$where2.$condition2."‘".$value2."‘";
    return  $sql;
}
function groupSelect1($from, $where1, $condition1,$value1) {
    $sql = "select *from ".$from." where ".$where1.$condition1."‘".$value1."‘";
    return  $sql;
}

try {
    $LoginPhone = $_GET["Phone"];//用户提交的用户名
    $Loginpassword  = $_GET["Password"];//用户提交的密码

    try {
        $conn = new PDO("mysql:host=$servername;port=3306;dbname=$dbname", $username, $password);//链接数据库
        //echo "PDO的API连接成功";

        // 设置 PDO 错误模式为异常
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        $Flage = false;

        $sql = groupSelect1($TableName, "phone","=",$LoginPhone);//查询有没有此手机号

        $result = $conn->query($sql);//发送SQL语句并接收数据库返回

        if ($result && $result->rowCount()) {//查询到数据
            $Flage = true;
        }

        if($Flage == true){
            $Flage = false;
            $sql = "UPDATE ".$TableName." SET password = "."‘".$Loginpassword ."‘"." WHERE phone=" .$LoginPhone;//更新
            $count  =  $conn->exec($sql); //返回受影响的行数
            if($count!=0){
               echo "OK";//返回
            }else{
               echo "errorCode:NoChange";//返回
            }
        }
        else{
            echo "errorCode:NoUserName";//没有用户
        }
        $conn=null;//关闭
    }
    catch(PDOException $e){
        echo $e->getMessage();
        echo "errorCode:DataBase";//返回
    }
}
catch(PDOException $e)
{
    echo $e->getMessage();
    echo "errorCode:ReadData";//返回
}

login.php

<?php

//http://IP地址/LoginAndRegistration/login.php?Phone=13275429560&Password=25
//PHP规定所有的变量前头必须加$
//明确一点,PHP的echo都是http返回的数据

$servername = "localhost";
$username = "root";
$password = "qq946029359";//根据自己的修改
$dbname = "login";//链接的数据库名字
$TableName = "register";//链接的表格的名字

function groupSelect($from, $where1, $condition1,$value1, $condition,$where2, $condition2, $value2) {
    $sql = "select *from ".$from." where ".$where1.$condition1."‘".$value1."‘".$condition ." ".$where2.$condition2."‘".$value2."‘";
    return  $sql;
}
function groupSelect1($from, $where1, $condition1,$value1) {
    $sql = "select *from ".$from." where ".$where1.$condition1."‘".$value1."‘";
    return  $sql;
}

try {
    $LoginPhone = $_GET["Phone"];//用户提交的用户名
    $Loginpassword  = $_GET["Password"];//用户提交的密码

    try {
        $conn = new PDO("mysql:host=$servername;port=3306;dbname=$dbname", $username, $password);//链接数据库
        //echo "PDO的API连接成功"; 

        // 设置 PDO 错误模式为异常
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

        $Flage = false;

        $sql = groupSelect1($TableName, "phone","=",$LoginPhone);//查询有没有此手机号

        $result = $conn->query($sql);//发送SQL语句并接收数据库返回

        if ($result && $result->rowCount()) {//查询到数据
            $Flage = true;
        }

        if($Flage == true){
            $Flage = false;
            $sql = groupSelect($TableName, "phone","=",$LoginPhone,"and","password","=",$Loginpassword);//组合SQL语句
            $result = $conn->query($sql);//发送SQL语句并接收数据库返回
            if ($result && $result->rowCount()) {//查询到数据
                //其实只要查询到就可以  $Flage = true;
                while($row = $result->fetch()) {//循环读出数据
                    $Flage = true;//用户名和密码正确
                    //echo $row[‘phone‘].$row[‘password‘];//打印数据
                    break;
                }
            }
            if($Flage == true)
            {
              echo "OK";//返回
            }
            else
            {
              echo "errorCode:Password";//密码错误
            }
        }
        else{
            echo "errorCode:NoUserName";//没有用户
        }
        $conn=null;//关闭
    }
    catch(PDOException $e){
        //echo $e->getMessage();
        echo "errorCode:DataBase";//返回
    }
}
catch(PDOException $e)
{
    //echo $e->getMessage();
    echo "errorCode:ReadData";//返回
}

Register.php

<?php
//注册或者找回密码
//http://IP地址/LoginAndRegistration/Register.php?TAG=Register&Phone=13275429560&Password=25  //注册
//http://IP地址/LoginAndRegistration/Register.php?TAG=RePassword&Phone=13275429560&Password=25  //找回密码

//https://域名/LoginAndRegistration/Register.php?TAG=Register&Phone=13275429560&Password=25  //注册
//https://域名/LoginAndRegistration/Register.php?TAG=RePassword&Phone=13275429560&Password=25  //找回密码
//PHP规定所有的变量前头必须加$
//明确一点,PHP的echo都是http返回的数据

$servername = "localhost";
$username = "root";
$password = "qwer123456";//根据自己的修改
$dbname = "login";//链接的数据库名字
$TableName = "register";//链接的表格的名字

function groupSelect($from, $where1, $condition1,$value1, $condition,$where2, $condition2, $value2) {
    $sql = "select *from ".$from." where ".$where1.$condition1."‘".$value1."‘".$condition ." ".$where2.$condition2."‘".$value2."‘";
    return  $sql;
}
function groupSelect1($from, $where1, $condition1,$value1) {
    $sql = "select *from ".$from." where ".$where1.$condition1."‘".$value1."‘";
    return  $sql;
}
function groupDelete($from, $where, $condition,$value) {
    $sql = "delete from ".$from." where ".$where.$condition."‘".$value."‘";
    return  $sql;
}

function groupInsert($from,&$option,&$value) {
    $Option = $option[0];
    $Value = "‘".$value[0];
    $bl = false;

    foreach($option as $va){
        if ($bl == true){ $Option = $Option.",".$va;}
        else{$bl = true;}
    }
    $bl = false;
    foreach($value as $va){
        if ($bl == true) $Value = $Value."‘".","."‘".$va;
        else $bl = true;
    }
    $Value=$Value ."‘";
    $sql = "insert into ".$from ."("  .$Option .")". " values(". $Value  .")";
    return  $sql;
}
try {
    $LoginTAG = $_GET["TAG"];//是注册还是找回密码
    $LoginPhone = $_GET["Phone"];//用户提交的用户名
    $Loginpassword  = $_GET["Password"];//用户提交的密码

    try {
        $conn = new PDO("mysql:host=$servername;port=3306;dbname=$dbname", $username, $password);//链接数据库
        //echo "PDO的API连接成功";
        // 设置 PDO 错误模式为异常
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $Flage = false;
        $sql = groupSelect1($TableName, "phone","=",$LoginPhone);//查询有没有此手机号
        $result = $conn->query($sql);//发送SQL语句并接收数据库返回
        if ($result && $result->rowCount()) {//查询到数据
            $Flage = true;
        }

        if($Flage == true){//有这个用户
            $Flage = false;
            if($LoginTAG == "Register"){//如果是注册
                echo "errorCode:UserAlreadyExists";//返回用户已经存在
            }else if ($LoginTAG == "RePassword"){//如果是找回密码
                //注:用户找回密码我建议先清除掉该用户绑定的所有设备信息
                /*写删除该用户的绑定设备的所有信息的函数*/
                $sql = groupDelete($TableName,"phone","=",$LoginPhone);//删除该手机号的信息
                $count  =  $conn->exec($sql); //返回受影响的行数
                if($count!=0){//删除了数据
                    $option=array("phone","password");
                    $value=array($LoginPhone,$Loginpassword);
                    $sql = groupInsert($TableName,$option,$value);
                    $count  =  $conn->exec($sql); //返回受影响的行数
                    if ($count !=0){//插入数据成功
                        echo "OK";//重置密码成功
                    }else{
                        echo "errorCode:DataBase";//重置密码失败,访问数据库异常
                    }
                }else{
                    echo "errorCode:DeleteUser";//删除用户信息异常
                }
            }
        }
        else{//没有这个用户
            if($LoginTAG == "Register"){//如果是注册
                $option=array("phone","password");
                $value=array($LoginPhone,$Loginpassword);
                $sql = groupInsert($TableName,$option,$value);
                $count  =  $conn->exec($sql); //返回受影响的行数
                if ($count !=0){//插入数据成功
                    echo "OK";//注册成功
                }else{
                    echo "errorCode:DataBase";//注册失败,访问数据库异常
                }
            }else if ($LoginTAG == "RePassword"){//如果是找回密码
                echo "errorCode:NoUserName";//没有用户
            }
        }
        $conn=null;//关闭
    }
    catch(PDOException $e){
        //echo $e->getMessage();
        echo "errorCode:DataBase";//返回
    }
}
catch(PDOException $e)
{
    //echo $e->getMessage();
    echo "errorCode:ReadData";//返回
}

五,修改APP连接的地址信息

1,修改注册登录连接的IP地址

2,修改连接的MQTT的信息

3,APP的更新配置(只需要把更新文件和更新的安装包放在可以http或者https访问下载的地方就可以)

1,修改访问更新文件,根据自己的修改

访问的更新文件的内容

{
VerCode:5,
VerName:1.2.1,
Address:"http://www.mnif.cn/appapk/IotDevelopmentVersion/20190730/app-debug.apk",
Details:
"1,增加自定义MQTT连接,支持TCP,SSL;
2,绑定设备可以自定义订阅的主题
3,支持单路开关控制
4,优化了通信监听程序
"
}

注:整个文件内容为JSON格式

VerCode:5,
VerName:1.2.1,每次上传APP安装包以后请修改此处和APP内部保持一致


Address:"http://www.mnif.cn/appapk/IotDevelopmentVersion/20190730/app-debug.apk",此为APP安装包的地址信息,请自行按照自己的修改

注:我的方式是先访问 updateinfo.txt 文件的内容,然后对比版本信息,如果有新版本则提示
1,增加自定义MQTT连接,支持TCP,SSL;
2,绑定设备可以自定义订阅的主题
3,支持单路开关控制
4,优化了通信监听程序

用户点击更新以后,APP 访问 http://www.mnif.cn/appapk/IotDevelopmentVersion/20190730/app-debug.apk下载安装包,下载完,调起安装.
 
我的存放方式:(我使用的阿里云的OSS存储,http/https下载比较快,当然也可以存放在自己的云端)
如果其它问题,将在后续文章中说明

https://www.cnblogs.com/yangfengwu/p/11273743.html
 

原文地址:https://www.cnblogs.com/yangfengwu/p/11273734.html

时间: 2024-08-27 19:54:34

1-开发共享版APP(搭建指南)-快速搭建到自己的服务器的相关文章

3-开发共享版APP(接入指南)-设备接入说明:使用隐藏配置

https://www.cnblogs.com/yangfengwu/p/11273226.html 该APP安装包下载链接: http://www.mnif.cn/appapk/IotDevelopmentVersion/20190730/app-debug.apk 或者扫描二维码下载 APP源码获取方式:(请阅读宝贝说明) 此APP建立在基础篇,升级篇,数据篇和安全篇.只有把这些篇章全部学过才能看得懂源码! https://item.taobao.com/item.htm?spm=a2oq0

1-开发共享版APP(源码介绍)-BUG修复

这一系列文章将介绍APP的源码,这一节作为所有BUG问题修复! https://www.cnblogs.com/yangfengwu/category/1512162.html    //开发共享版APP(接入指南) https://www.cnblogs.com/yangfengwu/category/1515825.html    //开发共享版APP(搭建指南) https://www.cnblogs.com/yangfengwu/category/1529078.html    //开发

定制开发共享旅游app软件平台

共享旅游一卡通系统开发找[龙梓:185.7630.7194微|电]定制开发共享旅游app软件平台,共享旅游源码模式开发,共享旅游模式开发,共享旅游app系统开发,共享旅游系统开发,共享旅游平台系统开发. 一.共享旅游一卡通的介绍 随着中国游客旅游消费能力提升和旅游经验的丰富,旅游需求逐渐从观光向休闲度假转变,自助游用户消费将日益从热门.核心旅游资源向等多元化和个性化方向转一般景区.农家乐.度假村以及娱乐.探险.民俗风情,体验类产品将成为消费主流,用户对于体验当地美食.活动等消费热情将不断提升.

快速搭建PHP开发环境(PhpStorm+EasyPHP)

写在开头,何为PHP(拍黄片)? P HP是一种开源的通用计算机脚本语言,尤其适用于网络开发并可嵌入HTML中使用(维基百科). 从上我们得出,何为PHP? 1.开源脚本语言. 2.用于网络开发可嵌入HTML使用. 优点:请自行百度(地址:http://baike.baidu.cn/view/99.htm) IDE选择:Eclipse,记事本,PhpStorm,Visual Studio等. 搭建开发环境 之 工具选择 工欲善其事,必先利其器.选择合适的开发工具,能极大的减少学习成本和提高学习和

React-Native 开发 android & ios App,共享一份代码

React-Native 开发的App, 所有组件ios & android 共用, 共享一份代码 包括一些自定义的组件, 如NavigationBar, TabBar, SegmentedControl, 使用字体图标, 具有一定的参考意义 主要专注于布局, 共享组件/代码, 以及一些React自带的组件, 如: ScrollView, TouchableOpacity, View, Text, ListView, Image, WebView 和 Api的使用, 这并不是一个完整版, 只是业

CentOS 7快速搭建Nodejs开发环境

Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好.学习Nodejs首先需要会安装环境.这里我介绍如何在CentOS7快速搭建Nodejs开发环境. 工具/原料 CentOS 7 Nodejs 通过NVM安装 1 NVM(Node version manager)顾名思义,就是Node.js的版本管理软件,可以轻松的在Node.js各个版本间切换,项目源码在GitHub: 如果你想长期做 node

使用visual studio 2013 快速搭建phonegap开发环境

前一段时间开发了一款简单的Phonegap应用,遇到了很多坑,其中有一个坑就是在搭建开发环境上.由于Phonegap 2.x 与3.x 区别比较大,导致了开发环境也有所不同.2.x 是这样的http://www.cnblogs.com/Random/archive/2011/12/28/2305398.html这一系列的文章有些没讲清楚版本号,也是入坑的一个原因吧. 3.x 需要通过nodejs安装 生成相应平台的工程文件,然后再开发. 另外,在这再解释一下cordova和phonegap的关系

快速搭建一个“微视”类短视频 App

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯云视频发表于云+社区专栏 关注公众号"腾讯云视频",一键获取 技术干货 | 优惠活动 | 视频方案 "爱就像蓝天白云晴空×××,突然暴风雨--"偷偷在上班期间看微视里美丽的×××姐,不巧被老大当场抓包"看来还是给你安排的工作太少了,这样吧,竟然你那么喜欢看微视,那就给你三天时间搭建出类似微视的短视频APP,要搭建不起来,这个月的绩效奖金就取消!"我的天!除了绝望还是绝望!人们常

BC网站搭建开发PHP版搭建开发致命错误的解决方法

原创文章:BC网站搭建开发PHP版搭建研发开发致命错误的解决方法主营产品BC/CP/SSC/系统彩/菠菜网站搭建,BC网站制作开发,BC网站AGbbinMG接口对接,菠菜网站制作,CP网站制作,SSC建站开发,CP平台系统彩,传统彩等平台建站制作.一站式开发制作[包域名.海外服务器.APP封装.后期维护.前期调试.反水接水,游戏接口,支付对接,在线客服接口]一站效率给客户一个全新体验,简单方便直接运营,专业的售后效力保证,处理客户后顾之忧. 解决:调用自己写的方法要加$this-> 用了一段时间