再谈关于SESSION的传递
来源:互联网 发布:android网络开发 编辑:程序博客网 时间:2024/05/01 08:23
我所说的传递是指新打开一个浏览器窗口转递,而不是在原窗口打开新页面的传递,原窗口打开新页面时PHP自己就会传递的
我们知道,在调用session_start()时,如果SESSION是基于COOKIE传递的话(大多都是这样),
PHP会创建一个COOKIE来保存当前的SESSIONID
于是乎我就在想,只要我们在页面打开时,读到当前COOKIE里面的SESSIONID,然后在session_start()之前指定下,
这样就可以传递SESSION了
可实际并非如此,
例如:
当我们打开页面,并刷新一下后,会看到COOKIE内已经保存了PHPSESSID变量,并且就是我们的SESSION ID
这时,我们把session_start();这句注释掉
再打开新窗口 然后打开页面,我们会发现$_cookie内并没有前一页面创建的PHPSESSID变量
想了好久,最后发现其实原因很简单
那是因为PHP在创建COOKIE的时候,是根据INI文件内的COOKIE失效时间来设置其生效时间,绝部分服务器的配置文件内都会是0,也就是关闭窗口就失败
所以我们在新打开窗口内读取另一个页面的COOKIE时,虽然另一个页面没有关闭,但是在新窗口内的COOKIE已经失效了
所以,我们只要在session_start()后面再把session_name为变量的COOKIE重新设置一下,并指定一下时间,然后只要
在指定时间内打开任何新窗口,都能得到这个COOKIE值的,然后再设定一下session_id,就可以在不同窗口间传递SESSION了
我的处理是这样的:
我的getCookie和makeCookie分别是取COOKIE和设置COOKIE的函数
- 再谈关于SESSION的传递
- javaweb关于两个项目session传递以及不同项目之间页面传值的总结
- 关于session的探讨
- 关于session的文章
- 关于Session的解释
- 关于SESSION的总结
- 关于session的错误
- 关于SESSION的总结
- 关于dblink的session
- 关于Oracle的session
- 关于session的知识
- 关于PHP的session
- 关于Session的总结
- 关于php的session
- 关于Hibernate的Session
- 关于session的理解
- 关于session的生命周期。
- 关于SESSION的理解
- Ajax并应用于xslt的服务器端的转换
- [Revolution]2009-3-8
- 开始上路
- VC 无闪烁刷屏 技术
- Remoting的使用,调用远程对象的构造函数,同时不在客户端包含远程对象程序集的引用
- 再谈关于SESSION的传递
- 自己动手创建免安装版Oracle客户端(for 9i/10g)
- fedora网卡激活
- Intel C++ 编译器在VC6下使用STLPort
- 跨浏览器兼容测试8大利器
- xp常见命令集
- 用户sa登录失败,该用户与可信sql server连接无关联
- 用R进行描述性统计
- OAUTH协议简介