在学习cookie/session 之前需要懂得几个知识。
-
客户端
客户端(Client)或称为用户端,是指与服务器相对应,为客户提供本地服务的程序。别 称 :用户端
web客户端 :Web客户端主要指web浏览器(Browser)。
-
服务端
服务端是为客户端服务的,服务的内容诸如向客户端提供资源,保存客户端数据。 别称:Server
-
会话
web语言中的会话
会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话。
多次会话 :用户打开多个浏览器,而不是打开一个浏览器建立了很多标签页面。
会话过程中要解决的一些问题?
- 大家在访问某个网站的时候,是否能看到提示你上次登录网站的时间,而且要注意的是不同用户上次登录的时间肯定是不一样的,这是怎么实现的?
- 大家在访问某个购物网站的时候,是否能看到提示你曾经浏览过的商品,同样也是不同用户浏览过的商品肯定不一样,这是怎么实现
- 还有我们在登录某个网站的时候,往往都可以选择保存登录信息多久,不用重复输入登录信息,这个又是怎么实现的?
- 大家在看视频的时候有没有发现即便你没有登录账户也能保存看过的视频。
- …
• 提问:这些数据保存在什么地方?
解决之道:
会话技术-cookie session =>http协议
cookie
cookie 原理图 讲解
讲解:cookie是基于http 协议,cookie 是由服务端进行设置,客户端接收,存在相对应的位置。IE/Firefox/Chrome等浏览器保存Cookie的位置
可以通过各个浏览器的控制台->Network(网络进行查看)。
也可以通过 Fiddler 工具进行抓包查看。
关于cookie的增删改查 这里就不写,手册上都有案例
cookie再次理解
session
1. Session是服务器端技术
2. 注意:一个会话对应一个Session文件
原理示意图
在WEB开发中,服务器可以为每个用户浏览器创建一个超全局变量$_SESSION ,注意:一个浏览器独占一个$_SESSION(默认情况下)。因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的$_SESSION中,当用户使用浏览器访问其它php页面时,其它php页面可以从用户的$_SESSION中取出该用户的数据,为用户服务。
Session和Cookie的主要区别在于
存储地方:
Cookie是把用户的数据写给用户的浏览器。
Session技术把用户的数据写到用户独占的$_SESSION中,存在服务器的某个路径的文件中。
安全:
由于存储的地方不同所以客户端没有服务器安全
数据格式:
cookie 只能存放字符串
session中可以保存的数据类型是 string, integer,double , bool array, object.
大小:
不同的浏览器可存储的cookie 的个数和大小的限制不一样。
session 是根据配置文件来确定的。
过期时间:
cookie 当没有设置时间则浏览器关闭就失效。
session数据默认存放时间是 1440秒, 这个时间可以通过 php.ini文件来修
如果客户端禁用cookie,怎样实现session技术共享多个页面
- 在每个超链接上添加一个PHPSESSID=sesssionId
- 使用常量SID
- 可以启用session.use_trans_sid 指定是否启用透明 SID 支持 即可以这样设置(不安全)
记得点个赞