用session实现的用户登陆,客户端是怎样获取到cookie信息的
大家都知道cookie是存在客户端,session存在服务器端。那么客户端具体是怎样获取cookie信息的呢?
更好的阅读体验可访问 这里。
实验环境
实验环境:xampp + Thinkphp5 + Firefox
首先清除浏览器的cookie缓存和服务器端的session文件。
- Firefox快捷键:Ctrl + Shift + Delete 清除浏览器cookie缓存信息。
- 查看服务器端的session文件基本也为空。(why.tmp是xampp原本自带的文件)

注:查看session存放位置的php代码为:
<?php
//~ 当前session存放位置
$sessionpath = session_save_path();
echo $sessionpath;
现在,浏览器既没有cookie信息,服务器端也不存在session文件。
获取过程
在浏览器右键查看元素,开始访问搭建的网站。

点击网络=》点击要查看的包=》可在响应头部发现Set-Cookie字段,也就是这时,服务器端返回了我们cookie。我们的浏览器也就存储了该cookie信息。以后我们再次访问该网站时,都会带着这个cookie信息。
那么现在服务器端的session信息是怎么个情况呢?

可以发现,此时已经生成了很多文件。其中最重要的文件也就是标记的那个,是服务器为我们生成的session文件(sess_后的内容与服务器端返回给我们的cookie一致)。但是因为我们还没有登陆,所以此时文件内容为空,大小为0KB。
然后我们登陆。再次去查看session文件。

发现文件大小已经变为了1KB。其中存储着我们的登陆信息。(文件的内容与我们具体代码的实现相关)
以后当我们访问该网站时,就会在请求头部带上cookie信息。像这样:

然后服务器端接收到cookie信息,就会去查找session文件的内容,如果发现文件记录了你已经登陆过,那么就不用再次登陆。
至此,session的作用也就体现了出来。
总结
可以发现session与cookie是密不可分的,任一方出了问题,都不能发挥出它的作用。例如:如果浏览器端清除了cookie信息,或者服务器端的session文件被删除,那么就需要重新登陆,重新生成互相匹配的cookie和session才可达到用户免登陆的效果。同样,如果浏览器端禁用了cookie,该目的也不能达到。
用session实现的用户登陆,客户端是怎样获取到cookie信息的的更多相关文章
- 用户登陆显示cpu、负载、内存信息
#用户登陆显示cpu.负载.内存信息 #!/bin/bash # hostip=`ifconfig eth0 |awk -F" +|:" '/Bcast/{print $4}'` ...
- (转载)PHP获取客户端、PHP获取服务器相关信息
(转载)http://www.php100.com/html/webkaifa/PHP/PHP/2009/1027/3446.html 服务器变量 $_SERVER 详解: 1.$_SESSION[' ...
- [转]mvc3 使用session来存储类来存储用户登陆信息
mvc3 使用session来存储类来存储用户登陆信息 2013-08-26 09:48:56| 分类: NET开发 |举报 |字号 订阅 项目之前的登陆机制是这样的:用户登陆后初始化一个类,类 ...
- IOS开发之记录用户登陆状态
上一篇博客中提到了用CoreData来进行数据的持久化,CoreData的配置和使用步骤还是挺复杂的.但熟悉CoreData的使用流程后,CoreData还是蛮好用的.今天要说的是如何记录我们用户的登 ...
- IOS开发之记录用户登陆状态,ios开发用户登陆
IOS开发之记录用户登陆状态,ios开发用户登陆 上一篇博客中提到了用CoreData来进行数据的持久化,CoreData的配置和使用步骤还是挺复杂的.但熟悉CoreData的使用流程后,CoreDa ...
- 用户登陆状态,ios开发用户登陆
IOS开发之记录用户登陆状态,ios开发用户登陆 上一篇博客中提到了用CoreData来进行数据的持久 化,CoreData的配置和使用步骤还是挺复杂的.但熟悉CoreData的使用流程后,CoreD ...
- PHP会话(Session)实现用户登陆功能 转自#落人间#
对比起 Cookie,Session 是存储在服务器端的会话,相对安全,并且不像 Cookie 那样有存储长度限制,本文简单介绍 Session 的使用. 由于 Session 是以文本文件形式存储在 ...
- PHP会话(Session)实现用户登陆功能
对比起 Cookie,Session 是存储在服务器端的会话,相对安全,并且不像 Cookie 那样有存储长度限制,本文简单介绍 Session 的使用. 由于 Session 是以文本文件形式存储在 ...
- JavaWeb 基于Session的用户登陆注销实现
通过Session来存储用户的部分登陆信息来验证用户是否在线,这应该时最容易实现的一种Web端方案,本文以SSM(Spring.SpringMVC.myBatis)框架为载体,来具体实现这套登陆系统. ...
随机推荐
- <Array> 274 275
274. H-Index 这道题让我们求H指数,这个质数是用来衡量研究人员的学术水平的质数,定义为一个人的学术文章有n篇分别被引用了n次,那么H指数就是n. 用桶排序,按引用数从后往前计算论文数量,当 ...
- luoguP4551最长异或路径
P4551最长异或路径 链接 luogu 思路 从\(1\)开始\(dfs\)求出\(xor\)路径.然后根据性质\(x\)到\(y\)的\(xor\)路径就是\(xo[x]^xo[y]\) 代码 # ...
- stm32环境搭建
软件下载:https://pan.baidu.com/s/1rat9Vnm 第一部分:软件安装 1.点击安装mdk514.exe,一路next就可以了 2.使用管理员身份打开软件,点击File,进到l ...
- SpringBoot集成Spring Security(6)——登录管理
文章目录 一.自定义认证成功.失败处理 1.1 CustomAuthenticationSuccessHandler 1.2 CustomAuthenticationFailureHandler 1. ...
- Mac修改hosts方法
总有各种各样的原因需要修改hosts文件,那么就来简介下怎么修改.terminal中打开hosts: sudo vim /private/etc/hosts 打开文件后I开启插入模式,在最后一行添加你 ...
- scala基础题--100以内的数求和,求出当和第一次大于20的当前数【for】
import util.control.Breaks._ object work01 { def main(args: Array[String]): Unit = { //方式一 var sum:I ...
- R与金钱游戏:均线黄金交叉1
双11临近的我发现自己真的很穷很穷很穷(重要的问题说三遍)-- 贫穷催人上进.于是我就寻思着在空闲时间自己捣鼓一下钱生钱的游戏是怎么玩的,毕竟就算注定做韭菜也要做一根有知识有理想的韭菜. 第一个要玩的 ...
- 【BZOJ4944】[NOI2017]泳池(线性常系数齐次递推,动态规划)
[BZOJ4944][NOI2017]泳池(线性常系数齐次递推,动态规划) 首先恰好为\(k\)很不好算,变为至少或者至多计算然后考虑容斥. 如果是至少的话,我们依然很难处理最大面积这个东西.所以考虑 ...
- 【05】Kubernets:资源清单(控制器 - ReplicaSet)
写在前面的话 从上一章节开始,我们一直在学习关于自主式 Pod 的资源清单编写, 但是自主式 Pod 存在着一个问题,就是和我们直接 docker run 运行 docker 容器一样.如果我们想以集 ...
- C#通过字符串分割字符串Split
string[] strArr = str.Split(new[] {"****==="},StringSplitOptions.None); 更多内容关注公众号 洛水梅家