情景:用户b得到了用户a的sessionid,如何根据此sessionid构造一个session对象,从而获得用户a的session值?
为了让大家更明白我的意思,请大家耐心看一下php的做法。
其实这个应该不算是疑难问题,就是php中用 sessionid得到session的值,因为的确很简单,只是可能大家平时用不到所以没有注意到罢了。 首先,多服务器共享session问题,这个大家应该都能够理解的,当一个网站的用户量过大,就会使用服务器集群,例如专门有一个登录用的服务器。 用户通过登录服务器登录之后,登录服务器保存了用户的登录信息session,而其他受访问的服务器,例如电影服务器没有这个session,那么我们就 要通过一个session的唯一标识来共享这个session了——具体session的共享超出了本文的范围,请自行查阅资料。 第二个用途就是,验证同一用户的不同会话,这个比较难理解。这样说吧,一个用户并非通过浏览器来请求连接,而是通过socket或者其它方式来请求 数据的时候,我们首先要对他进行用户登录验证,验证成功之后,就下发一个sessionid给他,然后他每次请求的时候就携带这个sessionid,我 们通过这个sessionid来判断session是否已经存在,如果存在我们就认定用户已经登录…… 对于第一个问题,我们可以把sessionid保存在数据库中得以实现,这个方法比较安全而且应用广泛,但是不是我们讨论的范围哦 第二个问题,其实已经很简单了,看一下代码 首先验证的时候产生一个sessionid;
Session_start();
<?php Session_id(‘$sessionid’);//注意这个时候session_id()这个函数是带有参数的 Session_start();//这个函数必须在session_id()之后 ?>这个时候session已经是登录验证时候的session了。 注意:在sessionServer.php中如果使用thinkphp等其他自动启动session_start();函数的框架时,必须先调用 session_destory()函数来清空session。 |
session 是当前会话的数据;你这样就是二个会话;应该得不到的;你可以用Application这个试试传值 吧;这个是全局的;
session["字段名"],这样获取 。
谢谢,可是你的回答与我的题目不符
还用什么构造啊?session本来就是传一个值过来,接收到就用,还想怎样
试想一下发邮件给用户并判断用户身份的情景,将用户当前的sessionid保存至数据库,然后将sessionid放在url中,将该url放在邮件内容中发送至客户,当用户需要修改密码或其它业务时,他可以点击邮件中的url。然后网站可以根据url中传递过来的sessionid判断用户是否同一人。
在这种情况下,就需要由sessionid取回session,并得到session的中值。请看php的做法:
在php中的解决办法:
1:在php中解决这个sesssion丢失,只需两个函数就搞定了,
session_id这个函数就是取得登陆界面的SessionID。
2:然后我们就可以根据这个SessionID构造一个Session:
session_id($sid);
session_start();
Session_id这个函数就是重新构造Session。
@tudas:
情景模式:
感觉应该是服务器端生成一个码添加入数据库,并把码连同url一起邮件到邮箱,在数据库码与客户邮箱对应关系,然后客户端点击url之后追加自己的邮箱地址返回,服务器端就可以根据传入的码与客户邮箱确定唯一信息,然后进行密码修改,此链接具有唯一性,可防止发送至邮箱的url泄露,并避免同一个url多次修改密码的问题
LZ动机不纯...
试想一下发邮件给用户并判断用户身份的情景,将用户当前的sessionid保存至数据库,然后将sessionid放在url中,将该url放在邮件内容中发送至客户,当用户需要修改密码或其它业务时,他可以点击邮件中的url。然后网站可以根据url中传递过来的sessionid判断用户是否同一人。
在这种情况下,就需要由sessionid取回session,并得到session的中值。请看php的做法:
在php中的解决办法:
1:在php中解决这个sesssion丢失,只需两个函数就搞定了,
session_id这个函数就是取得登陆界面的SessionID。
2:然后我们就可以根据这个SessionID构造一个Session:
session_id($sid);
session_start();
Session_id这个函数就是重新构造Session。
@tudas: 请教一下Php的SessionID是体现在HTTP传输协议上的那一个部分??
我理解楼主的意思,其实这种需求还是比较多的,譬如AJAX方式获取当前用户的SESSION,如果楼主的问题解决了,就可以通过SESSIONID获取SESSION了
有一种方案不知道可行性怎么样,就是SESSIONSTATE配置成SQLSERVER,那样可以直接从表中根据SESSION取数据反序列化
进程方式是没办法获取的!这个与php有点不同咯。