当前位置:首页> PHP教程> php基础
关键字
文章内容
session页面间传递变量的问题
 
 
修改时间:[2011/11/03 18:13]    阅读次数:[862]    发表者:[起缘]
 
新开窗口有SESSION的情况
  如果窗口A 是已经登陆了的,有SESSION,那么在A 中点击任何一个连接新打开的窗口都是有SESSION
  
  从窗口A中,采用window.open()等js方法打开的窗口也都拥有SESSION.
  从窗口A中,点击 文件(F)->新建窗口,这样新建的窗口也有SESSION.
  MyIE中的创建窗口都类似 IE中的在同一窗口点击文件->新建窗口,所以只要输入正确的地址都能取到SESSION
新开窗口取不到SESSION
  IE,自己手动开启一个新窗口(点击图标,新开一个窗口).这种情况下,即使输入正确的和窗口A一样的地址也取不到SESSION.
  
  在IE中,打开WebFolder,或者MsOffice等支持HTTP1.1扩展协议的在线编辑的软件,也是取不到SESSION
总结一下:
  SESSIOn取不到的主要原因是因为http是无状态的通信协议,所以在不同的进程之间无法共享SESSIOn,因为虽然你双击打开的新窗口且输入了同一地址,但是http协议的无状态特性,客户端和服务器都不会主动的去记录他们之间的连接状态.SESSION和COOKIE正是为了明确客户端和服务器之间通信的记录,或者说表明他们之间的关系的这么一种机制..
  你可以把SESSION / COOKIE的这种机制想象成为 京客隆超市 的会员卡. 你有这张会员卡,售货员就能知道你是什么级别的会员,商品应该按照什么样的会员价格卖给你.
  SESSION的处理方式比较多. 楼主的情况是PHP默认的处理机制.采用在服务器段保存以SESSION_ID的方式保存SESSION. 
  
  可以这么理解,超市只给了你一个ID卡,你的所有信息都是存放在超市的电脑里,而不是一张IC卡,信息存在卡片里.因为超市的分店之间没有联网,所以你的ID卡,就不能在其他分店里用了.
  但是如果你用COOKIE呢,就相当于,超市给的是一张IC卡,信息都存放在卡里,这样,即使超市没有联网,但是所有超市分店的电脑都能识别这样的IC卡,所以能在任何分店内使用他购物消费.但是也带来不安全,这个我就不举例子了.HOHO,现在造假太严重了