Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

客户端操作SessionID实现用户切换

  用户的登录信息通常是用Session来储存的,而SessionID是用Cookie来储存的。有些服务器程序生成的SessionID和Session的形式比较特殊。比如百度的SessionID就叫做BDUSS。如果有多个百度帐号需要来回切换,我们就可以利用代码取出或写入这个SessionID来实现快速切换帐号。下面这个代码在百度的网页上运行后就会生成一段代码。然后就可以退出使用其它用户登录。当想切换回原来的用户时候只要在浏览器上运行之前生成的代码就可以了。省去了每次登录都要输入用户名密码的麻烦。 JavaScript:with(document)write('JavaScript:document.cookie="'+cookie.match(/BDUSS=\w+/)+'";location.reload();');   这就是在别人的网页上使用的技巧。在自己开发的网页中,也可以使用这个技巧来实现用户切换。下面写了个例子 <!DOCTYPE html>
<style>
select {width:300px;outline:none;}
</style>
<select size="6" id="select"></select>
<script>
window.onload=function(){
  var cookie,s,n,i;
  cookie=document.cookie;
  //从Cookie中获取Session列表和当前Session
  s=cookie.match(/list=([^;]+)/);
  s=s?s[1].split(","):[];
  //!!!我电脑的SessionID名叫ssid,如果是其它的应该在这里修改
  n=cookie.match(/ssid=([^;]+)|$/)[1];
  //遍历Session列表
  for(i=0;i<s.length;i++)
    //给SELECT添加选项
    //如果当前Session是某个项目的,就设置它为选中,并清空变量n
    if(n!=s[i])select.addItem(s[i])
    else select.addItem(s[i],true),n=null;
  //如果变量n存在(也就是当前Session不在列表中)
  if(n){
    //把当前Session添加到SELECT中
    select.addItem(n,true);
    //并把n的值放入s,并把s保存进Cookie
    s.push(n);
    document.cookie="list="+s;
  };
  //最后给SELECT添加一个“添加”选项,用来添加新的Session
  select.addItem("添加");
};
//定义一个用来添加选项的方法
//第一个参数是文字、第二个参数是是否选已中
select.addItem=function(t,v){
  var o=document.createElement("option");
  o.appendChild(document.createTextNode(t));
  o.selected=!!v;
  select.appendChild(o);
};
//定义点击事件
select.onclick=function(){
  //当文字为“添加”时删除Session,否则把文字放入Session
  if(select.value=="添加")
    document.cookie="ssid=; Expires=W 1 Jan 1970 0:0:0 GMT";
  else
    document.cookie="ssid="+select.value;
  //刷新
  location.reload();
};
</script>

  这个例子需要服务器开启Session再测试,也就是说。如果是PHP的话应该在页面顶部加一句“session_start();”要不然页面不存在Session就谈不上测试了。
网名:
3.84.186.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^