App下載

徹底解決小程序無法觸發(fā)SESSION問題

猿友 2021-02-23 15:21:31 瀏覽數(shù) (9077)
反饋

一、首先找到第一次發(fā)起網(wǎng)絡(luò)請求的地址,將服務(wù)器返回?set-cookie?當(dāng)全局變量存儲起來

wx.request({
  ......
  success: function(res) {
    console.log(res.header);
    //set-cookie:PHPSESSID=ic4vj84aaavqgb800k82etisu0; path=/; domain=.fengkui.net

    // 登錄成功,獲取第一次的sessionid,存儲起來
    // 注意:Set-Cookie(開發(fā)者工具中調(diào)試全部小寫)(遠(yuǎn)程調(diào)試和線上首字母大寫)
    wx.setStorageSync("sessionid", res.header["Set-Cookie"]);
  }
})

二、請求時帶上將? sessionid? 放入 ?request? 的 ?header ?頭中傳到服務(wù)器,服務(wù)器端可直接在 ?cookie ?中獲取

wx.request({
  ......
  header: {
    'content-type': 'application/json', // 默認(rèn)值
    'cookie': wx.getStorageSync("sessionid")
    //讀取sessionid,當(dāng)作cookie傳入后臺將PHPSESSID做session_id使用
  },
  success: function(res) {
    console.log(res)
  }
})

三、后臺獲取 ?cookie? 中的 ?PHPSESSID?,將 ?PHPSESSID ?當(dāng)作? session_id ?使用

<?php
// 判斷$_COOKIE['PHPSESSID']是否存在,存在則作session_id使用
if ($_COOKIE['PHPSESSID']) {
    session_id($_COOKIE['PHPSESSID']);
}

session_start();
echo session_id();

wx.setStorageSync(string key, any data)將數(shù)據(jù)存儲在本地緩存中指定的 key 中。會覆蓋掉原來該 key 對應(yīng)的內(nèi)容。any wx.getStorageSync(string key)從本地緩存中異步獲取指定 key 的內(nèi)容

推薦好課:微信小程序微課、微信小程序商城-3天學(xué)會界面設(shè)計


0 人點贊