該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內部保持一致
![](http://static.javashuo.com/static/loading.gif)
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下載比較快,固然也能夠存放在本身的雲端)
![](http://static.javashuo.com/static/loading.gif)
若是其它問題,將在後續文章中說明
https://www.cnblogs.com/yangfengwu/p/11273743.html