PHP关于session的理解

session是一个会话技术,当用户在浏览网页的时候有些数据需要长时间保存起来的时候session再好不过了,由于http是无状态的,无法知道请求人信息,一次请求结束就没了,session可以通过sessionid来判断是谁干了些什么,需要保存什么。这个sessionid可以是由cookie传输到服务器端,也可以在url中传递。

那么从session_start();到保存一条数据,服务器都干了些什么呢?怎么找到对应客户端发来的请求呢?下面,细细分析

当session开始工作的时候,也就是创建了一个Session会话,那么在服务器端就会生成一个session文件,它是一个文本文件,是可以查看得到的,默认路径在php.ini中可以查看到。那么PHP在处理这个的时候会将每个session文件每次创建的时候都设立一个唯一的ID,就叫做sessionid,这个ID就是用来保证区分用户的唯一标识,它将以cookie的形式储存在客户端,当用户访问服务器的某个文件时,cookie会自带将sessionid传输到服务器端,然后PHP开始处理对应的Session文件。

那么问题来了,有朋友就遇到如果cookie被禁用了怎么办,cookie无法将sessionid返回给服务器端,该如何处理?详细答案我在前面有篇文章有全部解决方案。

接下来谈谈Session机制的生命周期,session文件在服务器端默认时保存1440秒,也就是24分钟,可以在php.ini文件中进行修改,不同于cookie的地方有一点也就在这里了,cookie不设置有效时间的话,当浏览器关闭后数据就会被销毁,而设置了时间限制的话才会在一定时间内保留,并且cookie文件里同一个网站储存的cookie可以是有多个字段跟有效期,不会因为某个字段数据到期而整个文件销毁,session是针对文件有效期的。

简而言之: session开始工作,创建sessionid以及文件在服务器端,然后以cookie的形式返回给客户端进行储存,每当客户端发起请求cookie将Sessionid传输给服务器端,PHP进行sessionid匹配输出相应数据,完成。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值