这里是文章模块栏目内容页
微擎框架是如何通过session保持和小程序端的状态记录?

微擎框架提供丰富的二次开发功能,天然的addons插件机制,让开发者新建模块,进行只有业务的开发。

在管理后台上,省去很多开发步骤,开发者可以集中在业务功能实现上。另外,开发的模块,还能通过微擎市场,

公开出售,能获取开发模块报酬。

这里分析小程序对接微擎接口,微擎框架是如何保持和小程序端的会话的?

在pc端,网页打开的页面实际是服务器端渲染出来的,客户端通过cookie里面的phpsession 存储和服务器端请求关系;服务器端通过判断每次请求的session id值判断是否同一个客户端。

在小程序上,每次请求接口都是无状态,因为没用实现cookie的这个机制。这也是一种缺失;

但是目前uniapp的uni.request请求,它是可以发送cookie的,并且在客户端保存cookie,所以,用uniapp请求接口,可以做到和传统的浏览器请求页面一样,不用担心session的问题;


下面来具体说微擎和小程序通过接口怎么处理数据的流程:

例如下面的请求:

  https://api.siyueweb.cn/app/index.php?i=2&t=2&v=1.8.1&

 from=wxapp&c=entry&a=wxapp&do=enset&

state=we7sid-4e2e885f16f647b401358b7cfe68d61f&

m=kbquke_house&sign=dc25975c07be45d98d111bba55a18dc2&op=adinfo

它是请求到微擎框架 addons/kbquke_house目录的wxapp.php文件。

参数注解:

i = uniacid  #
t=acid  和uniacid一致;
m=kbquke_house #表示addons/kbquke_house 目录的模块
from=wxapp #来自小程序接口
c=entry #进入微擎框架
a=wxapp #进入wxapp.php执行
do=enset #进入 接口代码实现 在wxapp.php文件的 function  doPageEnset() 方法。
#在 doPageEnset() 中 通过判断op参数,执行更细分的功能;
sign=dc25975c07be45d98d111bba55a18dc2 #对url的签名效验
state=we7sid-4e2e885f16f647b401358b7cfe68d61f #用来确定是否同一个客户端等同sessionid


所以,只要我们给接口发送请求时携带state 参数,并且服务器端的session中有对应的缓存,那么,我们在功能代码中就能通过 $_SESSION存储数据。

虽然直接用SESSION 进行零时会话的数据保存 已经很少用在php后端开发,但这也是一种。

而且微擎框架是用 session 来保持用户登录状态数据的。 

在小程序上,调用wx.login 得到用户的openid,发送到微擎端,创建或者更新openid对应一个用户。


好了,本文内容全部结束,感谢您的关注。希望能帮助到您。





上一篇:秒杀活动 js获取服务器时间的方法

下一篇:没有了