基于Cookie的Session和禁用Cookie的Session
2015-07-23 11:13
344 查看
Session简介
session的作用它是一种在客户端与服务器之间保持状态的解决方案,它将会话信息(uid等)供浏览器后续请求使用,可以获取并修改变量的值。和cookie一起使用识别同一个客户。
session何时创建
客户首次访问服务器时,session被创建并分配一个唯一的session_id,并将这个session_id传入客户端cookie中,保持客户端与服务器端的session_id一致.
如何确认某一位用户?session的有效时间
当用户再次访问浏览器时,会通过cookie传递session_id,服务器端将通过这个seesion_id确认这个用户并检索出回话信息。但是session回话是临时的,当用户关闭浏览器,或者长时间内不操作,当前session就会失效,当用户再次访问浏览器时,重新分配session_id
以上是基于Cookie的Session,当Cookie被禁用,效果就完全不一样了
PHP下的Session
要想使用开启一个会话,PHP中提供一个函数session_start(),看下这个函数的解释:[code]bool session_start ( void )
session_start() 会创建新会话或者重用现有会话。 如果通过 GET 或者 POST 方式,或者使用 cookie 提交了会话 ID, 则会重用现有会话。
基于Cookie的session
举例:假设有两段代码page1.php和page2.phppage1.php
[code]session_start(); $_SESSION["fuck"]="fuck";
page2.php
[code]session_start(); echo $_SESSION["fuck"]."<br>";
我们先访问page1.php,然后再访问page2.php,这时候会输出fuck。为什么呢?
首先要说一点,同一个浏览器在访问同一个站点的时候使用的是相同的cookie ,当我们先访问page1.php时,生成了session_id存放在cookie中,下次我们访问page2.php时,直接将session_id传了过去,再看session_start()函数的解释,使用 cookie 提交了会话 ID, 则会重用现有会话。,即他们拥有相同的回话,所以输出fuck
禁止Cookie
我们将浏览器的cookie禁止,看看会有什么效果1. 禁用之前,我们在page1.php中输出session_id,发现怎么刷这个session_id都不会变,这是因为我们通过cookie传送给服务器端验证后,session_id无误,因此也就不会变化
2. 禁用之后,page1.php在每次刷新后,session_id都会改变,原理很清楚了吧,Cookie被禁用了,session_id传不上去,服务器就以为你这个session_id失效了,所以每次都会重新分配一个session_id给你
3. 这时候再去访问page2.php,并不会有任何输出
禁止Cookie后如何共享session
通过url参数进行传递,直接将session_id嵌入到URL中去。在session_start()之前添加session_id($session_id),便可以实现session共享将session信息写入到文件中
通过Memcache实现Session共享
将session存入数据库实现共享
session共享参考:
http://blog.163.com/zeng_dili/blog/static/175459672010514352830/
相关文章推荐
- Codeforces Round #313 (Div. 2) A.B,C,D,E Currency System in Geraldion Gerald is into Art Gerald's Hexagon Equivalent Strings
- 小光棍数
- 一些javascript常用方法
- 无IDE时编译和运行Java
- mongDB安装与使用
- erlang observer工具
- 关于dicom参数信息和数据读写的理解
- Android Button控件与CountDownTimer的结合使用
- 在Django的模板中使用认证数据的方法
- HTML语义化
- 抽象工厂模式
- ubuntu长期支持的版本
- Android自定义捕获Application全局异常
- [RCP]布局之GridLayout
- 是时候学一波STL了。。。
- maven中自定义可执行jar包的MANIFEST
- AOL/J JDBC连接在EBS中的实现
- UNIX 系统上的文本操作简介
- NYOJ 24 素数距离问题
- ruby on rails调试技术