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(),看下这个函数的解释:
bool session_start ( void )
session_start() 会创建新会话或者重用现有会话。 如果通过 GET 或者 POST 方式,或者使用 cookie 提交了会话 ID, 则会重用现有会话。
基于Cookie的session
举例:假设有两段代码page1.php和page2.php
page1.php
session_start(); $_SESSION["fuck"]="fuck";
page2.php
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/
版权声明:本文为博主原创文章,未经博主允许不得转载。