其实此时此刻我并不知道造成这个错误的深层原因是什么,也不知道问题被解决的具体道理,只是先把这种异常情况记录一下,以防有人跟我一样被折磨过长时间。
这个问题是在我做一个腾讯微博授权绑定功能时出现的。
我希望在微博授权完成后使用session记录token信息,然后在创建关联账户时会用到这个session,期间不可避免的会页面跳转。然后问题出现了,页面在跳转后,session丢失了,而且也不是全部丢失,因为我在session中存的是一个数组,最后发现数组的key都还在,只是value不见了,而且最诡异的就是,其他地方的session都是可以正常传递的,只是某一个方法不行。我查了一些资料,对比了php.ini的配置,也使用了session id,但是都没有解决问题,最后决定从源头入手,回头看了一下设置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后调用的那个取user信息的方法,这个方法使用的是php的curl函数类,向指定的url发请求。然后开始怀疑“是不是在这里session的值被处理掉了,不知道 curl_close 这个方法会不会把当前的session值都会清空”,如前所述,原因我现在也不知道,但是这个怀疑确实帮我解决了问题,于是我把session设置延后到调用方法以后,即
$me = get_qq_user_info($key['access_token'], $key['openid']);
$_SESSION['qq_keys'] = $key;
结果问题真的解决了,session正常传递到跳转页面。
虽然不知道原因,但是也许可以记住一个窍门儿:session要在curl请求之后设置,中间穿插curl请求会使session丢失。
这个结论有待进一步考证。
分享到:
相关推荐
IFrame中Session丢失的解决办法
如:A,B两个服务,在浏览器中登录访问A后,当前打开的浏览器上在开一个选项卡访问B服务后,回过来点击访问A时session丢失,需要重新登录A才可以访问。经过资料查找,发现问题是因为:IP相同认为是同一个域,接收了B...
asp.net 修改/删除站内目录操作后Session丢失问题
Session丢失原因和解决方案.Session原理
重定向的时候是有session丢失的问题;window.open丢失session问题;使用框架(Frameset)调用不同域名下的页面,会出现此域下页面的Cookies和Session丢失的现象。
session的丢失原因和解决方案,与viewstate和cookie 的区别
Asp.net解决session丢失问题的两种方案,以及session丢失的原因。参考一些网上资料,自己总结出来解决方案,顺便附带两个测试案例。还有不清楚的请联系我QQ:394023002 附加信息:周
在php中设置session有很多方面包有给session设置值或直接设置过期、失效和有效期,下面小编来给大家给各位朋友介绍怎么使用。 我们先来看看在php.ini中session怎么设置,打开 php.ini,查找Session设置部分中以下一...
asp.net Session丢失的问题处理解决方案
博文链接:https://laorer.iteye.com/blog/41264
Session原理、Session丢失的原因、Session存储的机制、Session丢失的解决方案
主要介绍了jsp中存取session值简单介绍,涉及request和session的域操作等相关内容,具有一定参考价值,需要的朋友可以了解下。
SESSION购物车SESSION购物车SESSION购物车SESSION购物车SESSION购物车SESSION购物车SESSION购物车
NET的csharp的session丢失sessionid不一样 由于本地浏览器设置或者系统设置,导致sessionid无法准确上传到服务器
PHP中session全面教程.txt PHP中session全面教程.txt
用PHP写的购物车类,实现了 放入商品 修改数量 删除商品 显示购物车信息的功能.只用一个session就实现了 代码比较容易读懂,适合新手学习!...注意:有一个bug,最后一个del_cart()方法要先session_start(); 忘记加了!
php中会话超时时间不易控制,多种因素影响导致随机性太大;文档介绍如果严格控制php中SESSION过期时间
php5的session详解.pdf php5 的session详解其一:什么是session? php5 的session 详解之二:有两种方法传递 一个会话ID: php5 的session 详解之三:session安全 php5 的session 详解之四:……
关于PHP的session的基本使用 认识session的工作原理 1启动session 2读写session的变量 3删除session变量 4session在用户登录中的应用