当前位置: 首页 > 科技观察

PHP跳转后Session丢失值怎么处理

时间:2023-03-12 08:26:13 科技观察

其实此刻我不知道这个错误的根本原因是什么,也不知道问题解决的具体原因.我先把这个异常情况记录下来。以防有人像我一样被折磨太久。这个问题是我在做一个腾讯微博授权绑定功能的时候出现的。我希望在微博授权完成后使用session记录token信息,然后在创建关联账号的时候使用这个session,这期间页面难免会跳转。然后问题出现了。页面跳转后,session丢了,而且不是全部丢,因为我在session里面存了一个数组。发现数组的key还在,value没了,finally奇怪的是其他地方的session可以正常通过,但是某个方法不行。查了一些资料,对比了php.ini的配置,也用了sessionid,都没有解决问题。***决定从源头入手,回头看了一下设置session的地方...$key=get_qq_token($_GET["code"],$_GET["state"],$_SESSION["URI"]);if($key['access_token']!==false){$_SESSION['qq_keys']=$key;$me=get_qq_user_info($key['access_token'],$key['openid']);}....我发现在设置session后调用了获取用户信息的方法,该方法使用php的curl函数类向指定的url发送请求。然后就开始怀疑“session的值是不是已经在这里处理过了,不知道curl_close方法会不会把当前session的值清空”,前面说了,现在也不知道是什么原因,但是这个怀疑确实帮助我解决了问题,所以我将会话设置延迟到调用方法之后,即$me=get_qq_user_info($key['access_token'],$key['openid']);$_SESSION['qq_keys']=$键;结果,问题真的解决了,session也正常传递到跳转页面了。虽然我不知道原因,也许你可以记住一个技巧:session应该设置在curl请求之后,中间穿插的curl请求会导致session丢失。这一结论有待进一步验证。