1. 程式人生 > >微信小程式實現與後臺PHP互動

微信小程式實現與後臺PHP互動

微信小程式實現與後臺PHP互動

接下來將講後臺如何與前臺進行資料及圖片之間的互動,相信這一點是很多人所關注的,因為當時我實在團隊中負責後臺開發,因此對前端不是特別瞭解,這裡我會貼出前端開發時的部分程式碼截圖,微信小程式的官方api介紹地址是:

 

https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-network.html

微信與後臺伺服器之間的資料通訊是呼叫wx.request(OBJECT)實現的,官方api接口裡有對此說明,

例如前臺向後臺傳送資料,需要連結伺服器php作用路徑下的具體php檔案,並以key-value形式封裝json格式資料,請看以下程式碼:

url是伺服器的域名及isbn.php在伺服器的位置,這個位置是相對位置,在我上一篇購買的映象裡預設php檔案路徑為:

/yjdata/www/ ,這就意味著直接放在這個資料夾下的php只需要在域名後直接/+*.php即可,如果為了方便管理在這個目錄下建了一個資料夾則在域名後/資料夾名字/*.php即可。

此外前端向後臺傳輸的資料是以json格式封裝的,如圖中的data裡寫的資料,前面是key,後面是具體的value值,後臺取得時候是要根據前面的key值取值,此外,method決定了後臺與前臺通過什麼方式交流,這裡是用的GET方法,後臺與前臺方法必須配對使用,不能一個是GET,另一端是POST,在做微信支付功能時,有些安全性隱私性較高的資料必須採用POST進行互動。

這裡的前端向後臺傳輸的result是圖書的ISBN碼,因為我們做的小程式有個功能是呼叫相機掃描書本後面的條形碼從而獲得ISBN碼,前端將ISBN碼傳送到後臺,後臺程式將呼叫第三方豆瓣圖書介面來依據ISBN碼查詢圖書資訊,並將圖書資訊返回給前臺,這裡我貼出伺服器端的程式碼供大家參考:

 

1

<?php$result=$_GET["result"];/*獲取前端微信小程式掃書的isbn結果*/

1

/*與第三方介面通訊獲取書本資訊*/

1

$book_info=file_get_contents("https://api.douban.com/v2/book/isbn/:".$result);$jsondecode = json_decode($book_info,true);/*將獲取到的書本資訊JSON解碼*/$title=$jsondecode["title"];/*將解碼後書名賦值給title變數*/$author=$jsondecode["author"];/*將解碼後作者賦值給author變數*/$publisher=$jsondecode["publisher"];/*將解碼後出版社名賦值給publisher變數*/echo "title=".$title; /*向前端返回書名*/echo "author=".$author; /*向前端返回作者名*/echo "publisher=".$publisher; /*向前端返回出版社名*/?>

具體的註釋都寫得很詳細,向前臺返回資料則直接用echo即可,一般開發都要與資料庫打交道,因此,後臺程式就需要依據前臺傳來的資料對資料庫進行操作,這一部分其實也就是接受前臺的資料,執行對應的資料庫操作,這一部分只要是講到php資料庫操作的都會有,這裡我不再進行過多闡述。

此外,對於一個微信小程式來說,圖片是必不可少的,而圖片資源都是儲存在伺服器中的,因此如何對圖片進行儲存是一個關鍵。接下來將結合一個書本資訊的具體插入資料庫的過程來進行講解。。。(其實註釋特別詳細)

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

<?phpheader('content-type:application/json;charset=utf8');$mysql_server_name="localhost";/*資料庫伺服器名稱*/$mysql_username="root";/*資料庫使用者名稱*/$mysql_password="123456";/*資料庫使用者密碼*/$mysql_databasename="zhishu";/*進入資料庫後資料庫名*/$conn=mysqli_connect($mysql_server_name,$mysql_username,$mysql_password,$mysql_databasename);/*資料庫連線語句*/;;$bookname=$_POST["bookname"];/*從小程式前端獲取書本名字*/$authorname=$_POST["authorname"];/*從小程式前端獲取書本作者名字*/$bookintroduce=$_POST["introduce"];/*從小程式前端獲取書本介紹資訊*/$bookholder_name=$_POST["openid"];/*從小程式前端獲取書本持有人暱稱*/$bookclass=$_POST['classification'];;/*從小程式前端獲取書本分類*/date_default_timezone_set('PRC'); /*設定預設時區為中國*/$time=(string)date("Y-m-d-h-i",time());/*獲取時間*/function Unioname($a) /*將時間格式更改的函式*/{

    $a=explode('-',$a);

    $a=implode('',$a);

    return $a;

}$time=Unioname($time);$allowedExts = array("gif", "jpeg", "jpg", "png"); /*這裡的內容同用戶註冊時程式碼含義一樣,只不過那時是為了存使用者頭像並修改使用者頭像名字,這裡是存書本影象並修改書本影象的名字*/$temp = explode(".", $_FILES["file"]["name"]);//將圖片名字以.分割成兩個字串$extension = end($temp);     // 獲取圖片字尾名if ((($_FILES["file"]["type"] == "image/gif")

        || ($_FILES["file"]["type"] == "image/jpeg")

        || ($_FILES["file"]["type"] == "image/jpg")

        || ($_FILES["file"]["type"] == "image/pjpeg")

        || ($_FILES["file"]["type"] == "image/x-png")

        || ($_FILES["file"]["type"] == "image/png"))

    && ($_FILES["file"]["size"] < 1024000)   // 小於 1MB

    && in_array($extension, $allowedExts))

{

    if ($_FILES["file"]["error"] > 0) {

        echo "錯誤:: " . $_FILES["file"]["error"] . "<br>";

    } else {

        // 判斷當期目錄下的 upload 目錄是否存在該檔案        // 如果沒有 upload 目錄,你需要建立它,upload 目錄許可權為 777

        if (file_exists("bookimage/" . $_FILES["file"]["name"])) {

            echo $_FILES["file"]["name"] . " 檔案已經存在。 ";

        } else {

            // 如果 upload 目錄不存在該檔案則將檔案上傳到 upload 目錄下            move_uploaded_file($_FILES["file"]["tmp_name"], "bookimage/".$_FILES["file"]["name"]);

            $oldname = "bookimage/" . $_FILES["file"]["name"];

            $newname = "bookimage/" . $time .$bookholder_name.".".$extension;

            rename($oldname, $newname);

            $sql_num="select * from book";

            $reasult=mysqli_query($conn,$sql_num);

            $reasult_num=mysqli_num_rows($reasult); /*將獲取到書本資訊插入資料庫語句*/            $sql_insert="insert into book (book_id,bookname,authorname,book_intro,bookclass,bookholder_openid,bookpicture_path,is_CunZai,ChengJiao_num) VALUES ($reasult_num+1,'$bookname','$authorname','$bookintroduce','$bookclass','$bookholder_openid','$newname','1',0)";

1

2

3

4

5

6

7

8

9

10

11

            if( mysqli_query($conn,$sql_insert))

            {

                echo "插入書籍成功!";

            }

            else

            {

                echo "插入失敗";

            }

        }

    }

}mysqli_close($conn); /*關閉資料庫連線*/?>

首先使用$[FILE]全域性陣列接受檔案,其擁有的幾個屬性如下:

$_FILES["file"]["name"] - 被上傳檔案的名稱

$_FILES["file"]["type"] - 被上傳檔案的型別

$_FILES["file"]["size"] - 被上傳檔案的大小,以位元組計
$_FILES["file"]["tmp_name"] - 儲存在伺服器的檔案的臨時副本的名稱
$_FILES["file"]["error"] - 由檔案上傳導致的錯誤程式碼
這是一種非常簡單檔案傳送及接收方式,接收到以後對檔名字進行以“.”進行分割,這是為了獲取字尾,接下來要對字尾進行判斷,看是否是常用的圖片字尾格式,如果是並且圖片大小小於1MB,則進行接下來的操作,此時圖片位於快取區,因此必須將圖片改名後存於圖書圖片的資料夾下,這一部分在程式碼裡有實現,此外,還需要將圖片的路徑與該圖書其他資訊一起存到資料庫裡。到這裡基本小程式與後臺大部分能用到的互動我都在這裡講了,基本可以完成一個簡單的小程式。

相關推薦:

微信小程式PHP後臺實現的方法

以上就是微信小程式實現與後臺PHP互動的詳細內容,更多請關注php中文網其它相關文章!