1-開發共享版APP(搭建指南)-快速搭建到本身的服務器

該APP安裝包下載連接:php

http://www.mnif.cn/appapk/IotDevelopmentVersion/20190820/app-debug.apkhtml

或者掃描二維碼下載mysql

注:該下載可能下載的爲舊版本,可點擊 用戶 檢查更新 升級爲最新版本 sql

 

 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
相關文章
相關標籤/搜索