>  기사  >  위챗 애플릿  >  WeChat 애플릿은 백그라운드 PHP와의 상호 작용을 실현합니다.

WeChat 애플릿은 백그라운드 PHP와의 상호 작용을 실현합니다.

小云云
小云云원래의
2018-03-29 11:39:5439449검색

다음으로 백엔드가 프런트엔드의 데이터 및 사진과 어떻게 상호 작용하는지에 대해 이야기하겠습니다. 그 당시에는 팀에서 백엔드 개발을 담당했기 때문에 이 점이 많은 사람들의 관심사라고 생각합니다. 프론트엔드에 대한 자세한 내용은 여기에 게시하겠습니다. 프론트엔드 개발 중 일부 코드 스크린샷은 WeChat 애플릿의 공식 API 소개 주소입니다:

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

WeChat과 백엔드 서버 간의 데이터 통신은 wx.request(OBJECT)를 호출하여 이루어집니다. 예를 들어 프론트엔드가 데이터를 보내는 경우입니다. 백엔드에 연결하려면 서버 PHP 작업 경로 아래의 특정 PHP 파일에 연결해야 하며 json 형식 데이터를 키-값 형식으로 캡슐화해야 합니다. 다음 코드를 참조하세요.

url은 서버의 도메인 이름입니다. 서버의 isbn.php 위치는 이전 기사에서 구입한 이미지의 상대 위치입니다. 기본 PHP 파일 경로는

/yjdata/www/

입니다. 이 폴더에 직접 배치하면 도메인 이름 뒤에 /+*.php가 바로 뒤에 와야 합니다. 관리의 편의를 위해 이 디렉터리에 폴더를 만드는 경우 뒤에 /folder name/*.php를 추가하면 됩니다. 도메인 이름.

또한, 프론트 엔드에서 백엔드로 전송되는 데이터는 json 형식으로 캡슐화됩니다. 그림의 데이터에 쓰여진 데이터는 앞쪽에 키가 있고 뒤쪽에 특정 값이 있습니다. 백엔드에서는 이전 키 값을 기반으로 해야 합니다. 또한 메서드는 백엔드와 프런트엔드의 통신 방식을 결정합니다. 여기서는 백엔드와 프런트엔드 메서드 중 하나를 쌍으로 사용해야 합니다. 끝은 POST입니다. WeChat 결제 기능을 수행할 때 보안 및 개인 정보 보호가 높은 일부 데이터는 POST를 사용하여 상호 작용해야 합니다.


여기서 프론트 엔드에서 백엔드로 전송된 결과가 책의 ISBN 코드입니다. 왜냐하면 우리가 만든 작은 프로그램에는 카메라를 호출하여 책 뒷면의 바코드를 스캔하여 책의 ISBN 코드를 가져오는 기능이 있기 때문입니다. ISBN 코드는 ISBN 코드를 백엔드로 보내고, 백엔드는 제3자 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; /*向前端返回出版社名*/?>

구체적인 설명이 적혀있습니다. 데이터를 프런트 데스크에 반환하려면 echo를 직접 사용하면 됩니다. 일반적으로 개발에서는 데이터베이스를 처리해야 합니다. 따라서 백그라운드 프로그램은 프론트 데스크에서 전송된 데이터를 기반으로 데이터베이스를 운영해야 하며, 이 부분은 실제로 프론트 데스크로부터 데이터를 받아 해당 데이터베이스 작업을 실행하는 부분입니다. 여기서는 너무 자세히 설명하지 않겠습니다.

게다가 위챗 애플릿의 경우 사진은 필수인데, 사진 리소스는 서버에 저장되기 때문에 사진을 어떻게 보관하느냐가 관건입니다. 다음으로 도서 정보를 데이터베이스에 삽입하는 구체적인 과정을 설명하겠습니다. . . (사실 댓글은 매우 자세합니다.)


<?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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.