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


    该APP安装包下载链接:

    http://www.mnif.cn/appapk/IotDevelopmentVersion/20190820/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
     
  • 相关阅读:
    Docker常用命令
    Spark资源管理
    在Centos 7上安装Docker
    Docker网络管理
    Tensorflow 入门
    Spark远程调试函数
    Spark核心组件
    Spark job执行流程消息图
    数据库优化实践【性能检测工具篇】
    软件工程之系统建模篇【设计数据模型】
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/11273734.html
Copyright © 2020-2023  润新知