php 关闭cookie session,[正儿八经PHP]cookie禁用了,session还能用吗?

e944e4773e81

session交互原理

(一)、session工作机制介绍

为每个访问者创建一个唯一的id(UID)

然后基于这个UID来存储变量

UID 存储在 cookie 中,或者通过 URL 进行传递

e944e4773e81

(二)、举个栗子

1、第一次访问某网站

这时服务器生成一个不重复的 SESSIONID 的文件,比如在/var/lib/php/session目录。

2、php会设置sessionid在返回的Response的HTTP头

e944e4773e81

Response Headers 的 set-Cookie

PHP的sessionid默认的名字是PHPSESSIONID

3、客户端接收到Set-Cookie,将PHPSESSIONID写入cookie

e944e4773e81

cookie 存储 PHPSESSIONID

4、当你第二次访问页面时,请求头(Request)会携带cookie发送给服务器端

e944e4773e81

Request Headers 携带 Cookie

5、服务器根据cookie里的PHPSESSIONID去session目录查找对应session文件

6、找到这个session文件后,检查是否过期,如果没有过期,去读取Session文件中的配置;如果已经过期,清空其中的配置

如果客户端禁用了Cookie,那PHPSESSIONID都无法写入客户端,Session还能用?

答案显而易见:不能

而且禁用cookie之后,服务端没有接收到你cookie里面携带的PHPSESSIONID,那么基于HTTP是无状态的,那么你每一次请求,服务器都会当作是第一次请求,这样,每次都会生成一个唯一的sessionid文件。

(三)、那么我们还能用session吗?

我可以通过参数来处理嘛。通过GET或者POST请求,传递参数的方式传递sessionid不就可以了吗

GET http://www.xx.com/index.php?session_id=xxxxx

在渲染页面的时候,强制的给一个sessionid,然后请求的时候再传回来,不就和cookie的方式一样了吗。

但是这样做的方式是不可取的。为什么?

你只要将这个网站发送给别人,那么他将会以你的身份登录并做所有的事情。

所以千万不要使用这种方式,我只是举这个栗子,来让大家更深刻的理解session的机制和原理。

(四)、现状

在现在cookie几乎是不会被禁用的,因为现在网站都非常依赖cookie。然而我们使用session的方式还是需要依赖cookie,不要去使用参数传递这种不可取的方式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值