微信小程序request请求session失败

本文介绍了解决微信小程序中无法获取到session的问题。通过在服务器端使用PHP生成并设置session_id,确保了小程序能够正确地与服务器进行交互。此外,还详细展示了如何在小程序端存储和读取session_id。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这两天要被request请求搞死了,一直从服务器那边请求不到session,后面看来网上的解决办法才知道少了session_id,下面是我的解决方式:

服务器php:

 public function index(){

        //从微信客户端获取小程序的code
           $code =input('code');
           if (!$code) {
             die();
           }
        //    //用appod和secre以及code向微信服务器获取openid和session_key
           $url="https://api.weixin.qq.com/sns/jscode2session?appid=你的APPID&secret=你的小程序密钥&js_code=".$code."&grant_type=authorization_code";

           $res=file_get_contents($url);
           $res=json_decode($res,true);
         $session_key=$res['session_key'];
         $openid=$res['openid'];
        //  //设定一个16位随记字符串
         $str="QWERTYUIOPASDFGHJKLZXCVBNM1234567890qwertyuiopasdfghjklzxcvbnm";
         $max=strlen($str)-1;
         $third_session='';
         // //拼接
         for($i=0;$i<16;$i++){
              $third_session .=substr($str, rand(0,$max),1);
         }
         //拼接openid和session_key
         $value=$openid;
         //写入session
          session($third_session,$value);    
          $data=[$third_session,session_id(),$openid];
          echo json_encode($data);
         // echo "$session_key";

    }
  public function check(){

       $thirdsession=input('thridsession');
        //获取session值
       $thirdsession2=session($thirdsession);
       if ($thirdsession2) {
         echo 'session存在';
       }
       else{
        echo 'session不存在';
       }

  }

小程序:


//得到thridsession和session_id
var thridsession=wx.getStorageSync('thridsession');
//如果thridsession存在则取服务器验证登入是否失效
var session_id=wx.getStorageSync('session_id');
if(thridsession){
console.log('thridsession存在');
wx.request({
url: 'https://www.ctychen.cn/wx/index/Login/check',
data:{
'thridsession':thridsession
},
//加上session_id判断是同一绘画操作
header: { 'content-type': 'application/x-www-form-urlencoded', 'Cookie': 'PHPSESSID=' + session_id },
success:function(data){
console.log(data)
}
})
}else{
console.log('thridsession不存在');
//如果session不存在就去执行登入操作
wx.login({
success:function(res){
wx.request({
url: 'https://www.ctychen.cn/wx/index/Login/index',
data:{
'code':res.code
},
success:function(data){
thridsession=data.data[0];
session_id=data.data[1];
console.log(thridsession);
console.log(session_id);
//两者都存在的话就存入stroge
if(thridsession && session_id ){
wx.setStorageSync('thridsession', thridsession);
wx.setStorageSync('session_id', session_id);
}
}
})
}
})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值