基于Cookie的Session和禁用Cookie的Session

Session简介

  1. session的作用
    它是一种在客户端与服务器之间保持状态的解决方案,它将会话信息(uid等)供浏览器后续请求使用,可以获取并修改变量的值。和cookie一起使用识别同一个客户。
  2. session何时创建
    客户首次访问服务器时,session被创建并分配一个唯一的session_id,并将这个session_id传入客户端cookie中,保持客户端与服务器端的session_id一致.
  3. 如何确认某一位用户?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

  1. 通过url参数进行传递,直接将session_id嵌入到URL中去。在session_start()之前添加session_id($session_id),便可以实现session共享
  2. 将session信息写入到文件中
  3. 通过Memcache实现Session共享
  4. 将session存入数据库实现共享

session共享参考:
http://blog.163.com/zeng_dili/blog/static/175459672010514352830/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值