亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

微信小程序與后臺PHP交互的方法實例分析

 更新時間:2018年12月10日 10:07:15   作者:北方的刀郎  
這篇文章主要介紹了微信小程序與后臺PHP交互的方法,結合實例形式分析了微信小程序基于wx.request(OBJECT)方法與后臺php程序交互相關操作技巧與注意事項,需要的朋友可以參考下

本文實例講述了微信小程序與后臺PHP交互的方法。分享給大家供大家參考,具體如下:

接下來將講后臺如何與前臺進行數據及圖片之間的交互,相信這一點是很多人所關注的,因為當時我實在團隊中負責后臺開發(fā),因此對前端不是特別了解,這里我會貼出前端開發(fā)時的部分代碼截圖,微信小程序的官方api介紹地址是:

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

微信與后臺服務器之間的數據通信是調用wx.request(OBJECT)實現的,官方api接口里有對此說明,

例如前臺向后臺發(fā)送數據,需要鏈接服務器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碼發(fā)送到后臺,后臺程序將調用第三方豆瓣圖書接口來依據ISBN碼查詢圖書信息,并將圖書信息返回給前臺,這里我貼出服務器端的代碼供大家參考:

<?php
$result=$_GET["result"];/*獲取前端微信小程序掃書的isbn結果*/
/*與第三方接口通信獲取書本信息*/
$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即可,一般開發(fā)都要與數據庫打交道,因此,后臺程序就需要依據前臺傳來的數據對數據庫進行操作,這一部分其實也就是接受前臺的數據,執(zhí)行對應的數據庫操作,這一部分只要是講到php數據庫操作的都會有,這里我不再進行過多闡述。

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

<?php
header('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'); /*設置默認時區(qū)為中國*/
$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 目錄,你需要創(chuàng)建它,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)";
      if( mysqli_query($conn,$sql_insert))
      {
        echo "插入書籍成功!";
      }
      else
      {
        echo "插入失敗";
      }
    }
  }
}
mysqli_close($conn); /*關閉數據庫連接*/
?>

首先使用$[FILE]全局數組接受文件,其擁有的幾個屬性如下:

$_FILES["file"]["name"] - 被上傳文件的名稱
$_FILES["file"]["type"] - 被上傳文件的類型
$_FILES["file"]["size"] - 被上傳文件的大小,以字節(jié)計
$_FILES["file"]["tmp_name"] - 存儲在服務器的文件的臨時副本的名稱
$_FILES["file"]["error"] - 由文件上傳導致的錯誤代碼

這是一種非常簡單文件發(fā)送及接收方式,接收到以后對文件名字進行以“.”進行分割,這是為了獲取后綴,接下來要對后綴進行判斷,看是否是常用的圖片后綴格式,如果是并且圖片大小小于1MB,則進行接下來的操作,此時圖片位于緩存區(qū),因此必須將圖片改名后存于圖書圖片的文件夾下,這一部分在代碼里有實現,此外,還需要將圖片的路徑與該圖書其他信息一起存到數據庫里。到這里基本小程序與后臺大部分能用到的交互我都在這里講了,基本可以完成一個簡單的小程序。

希望本文所述對大家微信小程序開發(fā)有所幫助。

相關文章

  • JS制作圖形驗證碼實現代碼

    JS制作圖形驗證碼實現代碼

    這篇文章主要為大家詳細介紹了JS制作圖形驗證碼實現代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • JavaScript實現打字效果的方法

    JavaScript實現打字效果的方法

    這篇文章主要介紹了JavaScript實現打字效果的方法,可實現文字陸續(xù)出現的打字效果,涉及javascript時間函數及頁面元素獲取的相關技巧,需要的朋友可以參考下
    2015-07-07
  • JavaScript XML實現兩級級聯(lián)下拉列表

    JavaScript XML實現兩級級聯(lián)下拉列表

    用xml作為存儲容器,不用數據庫,速度和效率高些。
    2008-11-11
  • 原生js實現碰撞檢測

    原生js實現碰撞檢測

    這篇文章主要為大家詳細介紹了原生js實現碰撞檢測,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • JavaScript使用簡單正則表達式的數據驗證功能示例

    JavaScript使用簡單正則表達式的數據驗證功能示例

    這篇文章主要介紹了JavaScript使用簡單正則表達式的數據驗證功能,結合實例形式分析了JS針對表單輸入內容的簡單正則驗證操作技巧,需要的朋友可以參考下
    2017-01-01
  • JavaScript實現移動端簽字功能

    JavaScript實現移動端簽字功能

    這篇文章主要為大家詳細介紹了JavaScript實現移動端簽字功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 微信JSSDK上傳圖片

    微信JSSDK上傳圖片

    做過微信開發(fā)的都知道,在部分android機型里微信不支持網頁上傳圖片的,這是由于這些機型的文件上傳存在內存泄漏,會導致微信閃退,所以微信內置瀏覽器將文件上傳屏蔽,本篇文章給大家介紹使用微信jssdk如何上傳圖片,需要的朋友可以關注下
    2015-08-08
  • 通過手寫instanceof理解原型鏈示例詳解

    通過手寫instanceof理解原型鏈示例詳解

    這篇文章主要為大家介紹了通過手寫instanceof理解原型鏈示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • JavaScript知識點總結(十六)之Javascript閉包(Closure)代碼詳解

    JavaScript知識點總結(十六)之Javascript閉包(Closure)代碼詳解

    閉包是可以包含自由(未綁定)變量的代碼塊;這些變量不是在這個代碼塊或者任何全局上下文中定義的,而是在定義代碼塊的環(huán)境中定義。本文主要介紹了javascript中的閉包,感興趣的朋友一起看看吧
    2016-05-05
  • 在JSP中如何實現MD5加密的方法

    在JSP中如何實現MD5加密的方法

    這篇文章主要介紹了在JSP中如何實現MD5加密的方法,較為詳細的分析了JSP采用MD5加密的功能、特點及實現技巧,具有一定參考借鑒價值,需要的朋友可以參考下.
    2016-11-11

最新評論