ホームページ > WeChat アプレット > ミニプログラム開発 > WeChat アプレットはバックグラウンド PHP との対話を実現します

WeChat アプレットはバックグラウンド PHP との対話を実現します

小云云
リリース: 2018-03-29 11:39:54
オリジナル
39564 人が閲覧しました

次に、バックエンドがフロントエンドのデータや画像とどのようにやり取りするかについて説明します。この点は多くの人が懸念していると思います。当時、私はチームでバックエンドの開発を担当していたため、知りませんでした。フロントエンドについては、ここに投稿します。WeChat アプレットの公式 API 紹介アドレスは、https://mp.weixin.qq.com/debug/wxadoc/ です。 dev/api/api-network.html


WeChatとバックエンドサーバー間のデータ通信は、wx.request(OBJECT)を呼び出すことで実現されます。これは、たとえばフロントエンドがデータを送信する場合に説明されています。バックエンドに接続するには、サーバーの php アクション パスの下にある特定の php ファイルにリンクし、json 形式のデータをキーと値の形式でカプセル化する必要があります。次のコードを参照してください:

url はサーバーのドメイン名です。この場所は、前の記事で購入した画像内の相対的な場所です。デフォルトの php ファイル パスは、

/yjdata/www/

です。これは、php を意味します。このフォルダーに直接配置する場合は、ドメイン名の直後に /+*.php を追加するだけで済みます。管理の都合上、このディレクトリにフォルダーを作成する場合は、ドメイン名/フォルダー名/* の後に続けてください。 php.

なお、写真のデータに書かれているデータは、フロントエンドからバックエンドにカプセル化されており、前にキー、後ろに特定の値が入っています。さらに、メソッドはバックエンドとフロントエンドの通信方法を決定します。バックエンド メソッドとフロントエンド メソッドをペアで使用することはできません。 WeChat の支払い機能を実行する場合、セキュリティとプライバシーの高い一部のデータは POST を使用してやり取りする必要があります。

フロントエンドからバックエンドに送信される結果は、本の ISBN コードです。これは、私たちが作成した小さなプログラムには、カメラを呼び出して本の裏のバーコードをスキャンして、ISBN コードを取得する機能があるためです。 ISBN コード。フロントエンドは ISBN コードをバックエンドに送信し、バックエンド プログラムはサードパーティの Douban 書籍インターフェイスを呼び出して、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; /*向前端返回出版社名*/?>
ログイン後にコピー

具体的なコメントが書かれています フロントデスクにデータを返すには、通常、開発はデータベースを扱う必要があります。したがって、バックグラウンド プログラムは、フロント デスクから送信されたデータに基づいてデータベースを操作する必要があります。この部分は、PHP に関する限り説明されます。データベースの操作については、ここでは詳しく説明しません。

また、WeChat アプレットでは写真が必須であり、写真リソースはサーバーに保存されるため、写真をどのように保存するかが鍵となります。次に、書籍情報をデータベースに登録する具体的な手順を説明します。 。 。 (実際、コメントは非常に詳細です)


<?phpheader(&#39;content-type:application/json;charset=utf8&#39;);$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[&#39;classification&#39;];;/*从小程序前端获取书本分类*/date_default_timezone_set(&#39;PRC&#39;); /*设置默认时区为中国*/$time=(string)date("Y-m-d-h-i",time());/*获取时间*/function Unioname($a) /*将时间格式更改的函数*/{
    $a=explode(&#39;-&#39;,$a);
    $a=implode(&#39;&#39;,$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)";
ログイン後にコピー
            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 未満の場合は、この時点で画像がキャッシュ領域にあるため、画像の名前を変更して保存する必要があります。この部分はコード内で実装されます。また、書籍に関する他の情報とともに画像のパスをデータベースに保存することも必要です。この時点で、基本的なミニ プログラムとバックエンドの間のやり取りのほとんどについて説明しました。基本的には単純なミニ プログラムを完成させることができます。

関連する推奨事項:

WeChat ミニ プログラムの PHP バックエンドを実装する方法

以上がWeChat アプレットはバックグラウンド PHP との対話を実現しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート