session

123 阅读1分钟

这是我参与2022首次更文挑战的第17天,活动详情查看:2022首次更文挑战

session

一、session概念

http协议是基于请求响应的、无状态的。当我们在访问每个网站的过程中发送多个请求时,每个请求都是相互独立的,如果我们需要在请求之间共享数据,就需要用到session。session代表的就是一次网络会话,在整个会话过程中,我们可以发送多次请求,有多次请求组成一次会话。可以这样理解,当打开浏览器,访问某个网站时,会话开始,之后我们可能会在这个网站中发送多次请求,直至我们关闭浏览器时会话结束,这整个过程我们可以理解为一次会话。

session存储在服务器端,而且它依赖与cookie(cookie存储在客户端,它是服务器端向客户端保存数据),它有一个默认的超时时间,在php中为24分钟。如果超时了,代表会话结束了,session里面的数据就会被清空。

二、传递原理(PHP为例)

客户端发送第一次请求时,服务器端会调用session_start(),然后根据客户端发送过来的cookie获取到sessionID,如果获取到了sessionID,就去session池(存储在服务器中,可以根据sessionID获取对应的session)中获取对应的session,再将取到的session给变量 $_SESSION(数组类型,会话过程中,会在这个数组里保存数据) ,后面就可以直接使用这个变量。如果没有获取到sessionID,就会创建一个session,再把它放到session池中,然后通过cookie将session发送并保存到客户端。当客户端再一次发送请求时,服务器端会调用session_start(),获取到sessionID,在根据sessionID从session池中获取对应的session,这里获取到的session与第一次请求获取或创建的是同一个。

<?php
        //用户登录,登录成功了.
        $username="***";
        //开始一次会话.
        session_start();
        //我要把数据(用户名)保存在session里面。
        $_SESSION['username']=$username;
?>