您的位置:首页 > 产品设计 > UI/UE

小程序request请求PHP服务器session失效的解决,header头部加cookie

2017-12-22 11:45 706 查看
经过各种百度查询,总算摸索出来了,跟php的小伙伴们分享下:

app.js:

//登录流程
//获取openid 等信息并存储数据
wx.login({
success: function (res) {
if (res.code) {

//小程序第一次发起网络请求
wx.request({
url: that.globalData.url ,
data: {
code: res.code,
},
method: "POST",
header: {
'content-type': 'application/x-www-form-urlencoded'
},
success: function (res) {
console.log(res.data)
var wxSecretData = res.data.data.info;
var wxSession = res.data.data.session_id;
//存储缓存数据
//服务器的session_id值
wx.setStorageSync('PHPSESSID', wxSession);
//3rd_session
wx.setStorageSync('wxSecretData', wxSecretData);
//存储成功后设置全局登录状态
that.globalData.wxlogin = true

}
})
} else {
console.log('获取用户登录态失败!' + res.errMsg)
}
}
})


第二次及以后每次其他请求时必须加上cookie头,服务器端才会认为俩次请求为同一用户

//获取手机号时对后端的请求
getPhoneNumber: function (e) {
//检测登录态
wx.checkSession({
success: function () {
if (e.detail.errMsg ==="getPhoneNumber:ok"){
//session 未过期,并且在本生命周期一直有效
var session_id = wx.getStorageSync('PHPSESSID');//获取本地取存储的sessionID
//header头部加入cookie   PHPSESSID为php服务器跟浏览器中cookie中的session_id名字,不能更换,java为:JSESSIONID
var header = { 'content-type': 'application/x-www-form-urlencoded', 'Cookie': 'PHPSESSID=' + session_id }
//传值给服务器获取并存储
wx.request({
url: app.globalData.url ,
data: {
iv: e.detail.iv,
secretCode: e.detail.encryptedData
},
method: 'POST',
header: header,
success: function (res) {
console.log(res.data);
return;
if (res.data.status == 1) {
//获取手机号。。。
} else {
wx.showToast({
title: '读取手机号失败',
image: app.globalData.wrongSrc,
duration: 2000
})
}
},
fail: function () {
wx.showToast({
title: '获取失败',
image: app.globalData.wrongSrc,
duration: 2000
})
}

});
}

},
fail: function () {
//登录态过期
wx.login() //重新登录

}
})

},


PHP服务器端:

//获取当前服务器端的session_id,然后给小程序传值过去
session_id();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  session
相关文章推荐