微信小程序与后台PHP交互

article/2025/10/23 4:04:07

    在去年的时候,参加过学校的一个创业活动,在团队决定做一个关于图书的微信小程序以后,我负责做微信小程序的后台程序,因为初次接触,决定选用较为简单的PHP作为后台语言,实现了微信小程序的一些基本功能,例如对微信前段来的图片文字进行存储,或者接收到前端传来的关键字对服务器里的数据进行查询并返回前端,利用前端传来图书的ISBN码调用第三方豆瓣图书接口进行图书信息查询,最后还有比较难实现的微信支付功能,在这之前走了许多弯路,都是一步一步探索,在这里,将自己曾经的一些写下来,希望能帮助到大家。这是整个服务器端开发第二部分,第一部分主要讲的是微信小程序使用php做后台的服务器搭建,关于这一部分可以移步我的上一篇博客,很详细,超级详细:

    https://blog.csdn.net/longjialin93528/article/details/79727237

接下来将讲后台如何与前台进行数据及图片之间的交互,相信这一点是很多人所关注的,因为当时我实在团队中负责后台开发,因此对前端不是特别了解,这里我会贴出前端开发时的部分代码截图,微信小程序的官方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码查询图书信息,并将图书信息返回给前台,这里我贴出服务器端的代码供大家参考:

<?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即可,一般开发都要与数据库打交道,因此,后台程序就需要依据前台传来的数据对数据库进行操作,这一部分其实也就是接受前台的数据,执行对应的数据库操作,这一部分只要是讲到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'); /*设置默认时区为中国*/
$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 目录权限为 777if (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,则进行接下来的操作,此时图片位于缓存区,因此必须将图片改名后存于图书图片的文件夹下,这一部分在代码里有实现,此外,还需要将图片的路径与该图书其他信息一起存到数据库里。到这里基本小程序与后台大部分能用到的交互我都在这里讲了,基本可以完成一个简单的小程序,如果有需要更进一步了解的,请在文章下评论,我会及时回复的~

   


http://chatgpt.dhexx.cn/article/PefQvfgE.shtml

相关文章

最全的PHP后台管理系统源码

项目介绍 一款 PHP 语言基于 ThinkPhp6.x Layui MySQL等框架精心打造的一款模块化、插件化、高性能的前后端分离架构敏捷开发框架&#xff0c;可用于快速搭建前后端分离后台管理系统&#xff0c;本着简化开发、提升开发效率的初衷&#xff0c;框架自研了一套个性化的组件&am…

PHP+Mysql 实现后台管理

刚学了几天的PHP,然后刚好有个后台管理的项目要做&#xff0c;抱着学php的目的&#xff0c;便打算用php开始写。后台就是对几张表进行增删查改操作。 一开始先从简单的下手&#xff0c;有一张学生信息表&#xff0c;得到里面的各个信息&#xff0c;并显示在页面上。先写了一个…

用php做管理后台

最近因处理家庭之事,技术上没有提高,这段时间也陆续的恢复了正常的开发,由于要做一个管理后台,所以在选择语言和架构上搜了不少资料, php 和java 的选择上,后来选择用php作为管理后台开发的语言. 最开始选择了springboot 上 的一个开源代码.由于对springboot 开发不够熟悉,费心…

微信小程序php后台实现

微信的登陆流程 首先前端发送请求到服务器: wx.login({success: function (res) {var code res.code;//发送给服务器的codewx.getUserInfo({success: function (res) {var userNick res.userInfo.nickName;//用户昵称var avataUrl res.userInfo.avatarUrl;//用户头像地址v…

最棒的PHP后台管理系统

项目介绍 一款 PHP 语言基于 ThinkPhp6.x Layui MySQL等框架精心打造的一款模块化、插件化、高性能的前后端分离架构敏捷开发框架&#xff0c;可用于快速搭建前后端分离后台管理系统&#xff0c;本着简化开发、提升开发效率的初衷&#xff0c;框架自研了一套个性化的组件&am…

PHP后台开发框架

项目介绍 一款 PHP 语言基于 ThinkPhp6.x Layui MySQL等框架精心打造的一款模块化、插件化、高性能的前后端分离架构敏捷开发框架&#xff0c;可用于快速搭建前后端分离后台管理系统&#xff0c;本着简化开发、提升开发效率的初衷&#xff0c;框架自研了一套个性化的组件&am…

管理后台-后端-PHP篇

这里选用codeigniter做为web框架&#xff0c;因为它安装方便&#xff08;独立压缩包解压即可&#xff09;、自身集成了migration,query-builder&#xff08;对数据库的封装&#xff0c;不用关心数据库选型&#xff09;&#xff0c;虽然CI官方说明PHP版本只要求5.2&#xff0c;但…

PHP后台管理系统

项目介绍 一款 PHP 语言基于 ThinkPhp6.x Layui MySQL等框架精心打造的一款模块化、插件化、高性能的前后端分离架构敏捷开发框架&#xff0c;可用于快速搭建前后端分离后台管理系统&#xff0c;本着简化开发、提升开发效率的初衷&#xff0c;框架自研了一套个性化的组件&am…

企业级PHP后台开发框架

项目介绍 一款 PHP 语言基于 ThinkPhp6.x Layui MySQL等框架精心打造的一款模块化、插件化、高性能的前后端分离架构敏捷开发框架&#xff0c;可用于快速搭建前后端分离后台管理系统&#xff0c;本着简化开发、提升开发效率的初衷&#xff0c;框架自研了一套个性化的组件&am…

【web前端开发】后台PHP

文章目录 PHP基本知识PHP基本语法1.php变量、常量2.php打印输出3.php运算符 if、switch语句array数组数组声明数组键名定义的规则数组的赋值操作php常见数组的分类1.数值数组2.关联数组3.多维数组 循环结构与数组遍历数组遍历--forbreak && continueforeach语句1.遍历一…

PHP从前端到后台整站开发实战笔记-1

前言 从慕课网上搞了一套ThinkPHP整站开发从前端到后台的视频教程,好好系统的学习一下MVC模式下的正规开发流程,做一下学习过程中的开发笔记. 1.系统概述 这套教程视频中使用了ThinkPHP框架,但是有点老了,用的还是3.2.3版本的,不过思路很重要,等全做好了可以考虑再用最新的5…

PHP之后台开发需要做什么——即时通信IM

关于“即时通信IM”&#xff0c;腾讯云的官方文档&#xff0c;是这样介绍的&#xff1a;即时通信&#xff08;Instant Messaging&#xff0c;IM&#xff09;基于QQ 底层 IM 能力开发&#xff0c;仅需植入 SDK 即可轻松集成聊天、会话、群组、资料管理能力&#xff0c;帮助您实现…

通过数据泵expdp、impdp方式备份与还原(导出与导入)Oracle数据库

作者专注于Java、架构、Linux、小程序、爬虫、自动化等技术。 工作期间含泪整理出一些资料&#xff0c;微信搜索【程序员高手之路】&#xff0c;回复 【java】【黑客】【爬虫】【小程序】【面试】等关键字免费获取资料。 目录 前言 一、备份 step1&#xff1a;使用system登…

expdp的用法

exp/imp与expdp/impdp的用法区别 1&#xff1a;把用户usera的对象导到用户userb,用法区别在于fromuserusera touseruserb ,remap_schemausera:usera 。例如 imp system/passwd fromuserusera touseruserb file/oracle/exp.dmp log/oracle/exp.log; impdp system/passwd directo…

expdp/impdp 详细参数解释

数据泵导出实用程序提供了一种用于在 Oracle 数据库之间传输 数据对象的机制。该实用程序可以使用以下命令进行调用: 示例: expdp scott/tiger DIRECTORYdmpdir DUMPFILEscott.dmp 您可以控制导出的运行方式。具体方法是: 在 expdp 命令后输入 各种参数。要指定各参数, 请使用关…

Oracle详解:exp/imp和expdp/impdp的区别

Oracle详解:exp/imp和expdp/impdp的区别 结论&#xff1a; 在10g之前&#xff0c;传统的导出和导入分别使用EXP工具和IMP工具&#xff0c;从10g开始&#xff0c;不仅保留了原有的EXP和IMP工具&#xff0c;还提供了数据泵导出导入工具EXPDP和IMPDP。 1、exp和expdp最明显的区…

使用expdp(非本地)远程导出数据

背景&#xff1a; 前段时间&#xff0c;需要从异地一个测试数据库中将测试数据(一张表)导入本地库&#xff0c;表数据量大约500万&#xff0c;字段160多个&#xff0c;开始用了exp/imp方式&#xff0c;速度奇慢&#xff0c;不能忍&#xff0c;于是转而使用expdp/impdp方式。 e…

运维 —— expdp、impdp

一、exp/imp与expdp/impdp 1&#xff09;exp和imp是客户端工具程序,它们既可以在可以客户端使用,也可以在服务端使用。 2&#xff09;expdp和impdp是服务端的工具程序,他们只能在ORACLE服务端使用, 不能在客户端使用。 3&#xff09;字符集的问题到expdp/impdp数据泵已经消除…

expdp / impdp 用法详解

一、注意事项&#xff1a; EXP和IMP是客户端工具程序&#xff0c;它们既可以在客户端使用&#xff0c;也可以在服务端使用。 EXPDP和IMPDP是服务端的工具程序&#xff0c;他们只能在ORACLE服务端使用&#xff0c;不能在客户端使用。 IMP只适用于EXP导出的文件&#xff0c;不适…

expdp/impdp 数据泵导入导出

业务场景&#xff1a; 在工作中&#xff0c;涉及到oracle数据库迁移&#xff0c;使用navicat等其他工具 容易报错&#xff0c;一系列问题很麻烦&#xff0c;今天记录一下操作流程及个人理解&#xff08;文章参考了很多文档和博客&#xff09;&#xff1b; EXPDP数据导出 请自…