thinkphp和mysql多角色登录_小程序和ThinkPHP5结合实现登录状态(含代码)

本篇文章给大家带来的内容是关于小程序和ThinkPHP5结合实现登录状态(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

微信小程序中,一般会涉及三种登录方式:

1. 使用微信账号登录

2. 自有的账号注册和登录

3. 使用其他第三方平台账号登录

微信账号登录流程:

1. 小程序通过wx.login获取code,发往后台,后台以此向微信API换取session_key和openid;

2. 随机生成字符串作为sessionid(key),session_key和openid作为value,存入redis中,为了安全,

存入的时候还应设置一个超时的时间;

3. 客户端将返回的sessionid存入storage,调用那些需要登录后才有权限的访问的后台服务时,

你可以将保存在storage中的sessionid取出并携带在请求中,后台代码中获取到该sessionid后,

从redis中查找是否有该sessionid存在,存在的话,即确认该session是有效的,

继续后续的代码执行,否则进行错误处理。

本文采用的是自由的账号注册和登录,主要思路和流程如下:

1. 进入小程序首先通过wx.login获取code,通过后台接口发往后台,后台以此向微信API换取session_key和openid;

2. 判断数据库中有无该openid【唯一标识,需和账号(手机号)绑定】,

-- 如果数据库中没有该openid(说明没有该账号):

判断传过来的手机号是否为空(登录时会将手机号存到全局变量),如果不为空,则说明是刚登录过的,然后绑定openid及openid_time(当前时间),

如果手机号也为空,说明没登录过,则返回登录失败信息,使客户端跳转登录页;

-- 如果数据库中有该openid(说明数据库中有相对应的手机号),

判断openid_time距现在的时间是否大于4小时,如果大于,返回登录失败信息,使客户端跳转登录页;

如果小于,则更新openid_time为当前时间,然后返回登录成功信息及手机号。

3. 登录页面:判断数据库中该手机号是否存在,如果存在,则更新openid_time为当前时间,如果不存在,则添加该手机号用户。然后跳转首页执行wx.login方法,登录成功,保持登陆状态。

详细流程:

步骤1:进入小程序首先通过wx.login获取code,通过后台接口发往后台,后台以此向微信API换取session_key和openid;

步骤2:判断数据库中有无该openid【唯一标识,需和账号(手机号)绑定】;

步骤3:登录页面:登录成功后,跳转首页执行wx.login方法,然后登录成功,保持登陆状态。

根据微信API获取sessionkey 和 openid的方法

date_default_timezone_set('PRC');

$opts = array(

CURLOPT_TIMEOUT => 30,

CURLOPT_RETURNTRANSFER => 1,

CURLOPT_SSL_VERIFYPEER => false,

CURLOPT_SSL_VERIFYHOST => false,

CURLOPT_HTTPHEADER => $header,

CURLOPT_COOKIESESSION => true,

CURLOPT_FOLLOWLOCATION => 1,

CURLOPT_COOKIE

=>session_name().'='.session_id(),

);

/* 根据请求类型设置特定参数 */

switch(strtoupper($method)){

case 'GET':

// $opts[CURLOPT_URL] = $url . '?' . http_build_query($params);

// 链接后拼接参数 & 非?

$opts[CURLOPT_URL] = $url . '?' . http_build_query($params);

break;

case 'POST': //判断是否传输文件

$params = $multi ? $params : http_build_query($params);

$opts[CURLOPT_URL] = $url;

$opts[CURLOPT_POST] = 1;

$opts[CURLOPT_POSTFIELDS] = $params;

break;

default:

throw new Exception('不支持的请求方式!');

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值