Chinaunix首页 | 论坛 | 博客
  • 博客访问: 8980
  • 博文数量: 6
  • 博客积分: 180
  • 博客等级: 入伍新兵
  • 技术积分: 55
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-14 19:50
文章分类

全部博文(6)

文章存档

2011年(6)

我的朋友
最近访客

分类: 系统运维

2011-09-08 19:11:44

近段做项目碰到一个session问题,就是异步请求session的时候,服务器会给同一个客户分配不同的sid ,就没有办法实现会话了,先说下结局方案:

//$session_id在登陆的时候返回给前端,验证登陆的时候再传来

 

  1. Session_id($session_id);
  2. Session_start();

 

­分析一下原因,我们先看sessionid的机制吧   //以下内容来自互联网

php中用sessionid得到session的值,因为的确很简单,只是可能大家平时用不到所以没有注意到罢了。

先说说,这个机制的用途吧,到现在为止战地知道这个机制有两个方面的用途:

首先,多服务器共享session问题,这个大家应该都能够理解的,当一个网站的用户量过大,就会使用服务器集群,例如专门有一个登录用的服务器。用户通过登录服务器登录之后,登录服务器保存了用户的登录信息session,而其他受访问的服务器,例如电影服务器没有这个session,那么我们就要通过一个session的唯一标识来共享这个session了——具体session的共享超出了本文的范围,请自行查阅资料。

第二个用途就是,验证同一用户的不同会话,这个比较难理解。这样说吧,一个用户并非通过浏览器来请求连接,而是通过socket或者其它方式来请求数据的时候,我们首先要对他进行用户登录验证,验证成功之后,就下发一个sessionid给他,然后他每次请求的时候就携带这个sessionid,我们通过这个sessionid来判断session是否已经存在,如果存在我们就认定用户已经登录……

对于第一个问题,我们可以把sessionid保存在数据库中得以实现,这个方法比较安全而且应用广泛,但是不是我们讨论的范围哦

可以搜索mysql session关键字获取

/////////////////////////////////////////////////////////////////////////////

因为这套程序特殊的机制原因,就比较像无cookies式浏览,所以可以用这个方法解决

阅读(971) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~