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
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM