会话技术之cookie和session

COOKIE

什么是COOKIE?

Cookie是由网站存储在用户计算机上的小型文本文件,用于在用户访问网站时跟踪和识别用户。Cookie可以在用户的计算机上存储有关用户行为和偏好的信息,以便在用户下次访问相同网站时提供个性化的体验。以下是一些关于Cookie的重要信息:

  1. 用途

    • 跟踪用户会话:网站可以使用Cookie来跟踪用户在网站上的活动和会话,以便在用户导航网站时保持连续性。
    • 记住用户偏好:Cookie可以存储用户个性化设置和偏好,如语言选择、主题偏好等。
    • 实现购物车功能:在电子商务网站上,Cookie常用于存储购物车内容,以便用户可以在不同页面之间保持购物车内容。
  2. 工作原理

    • 当用户访问一个网站时,网站会将适当的信息存储在用户计算机上的Cookie文件中。
    • 每当用户再次访问相同的网站时,浏览器会将存储在Cookie中的信息发送回给网站,以便网站可以识别用户并提供个性化服务或功能。

COOKIE的工作原理

  1. 保护隐私
    • Cookie通常被用来提供个性化体验,但也可能对用户隐私构成潜在威胁。为此,现代浏览器提供了设置选项,让用户选择是否接受或拒绝Cookie,以便保护隐私。

总的来说,Cookie是一种在网站和用户之间交换信息的常见机制,被广泛用于提供更个性化和流畅的用户体验。

设置COOKIE

setcookie (  $name, $value ,$expire , $path ,$domain )

说明:

1) n a m e / / c o o k i e 的名称 s t r i n g / a r r a y 如设置: s e t c o o k i e ( ′ c 1 [ k 1 ] ′ , 值 ) ;读取: name //cookie的名称 string/array 如设置:setcookie('c1[k1]', 值);读取: name//cookie的名称string/array如设置:setcookie(c1[k1],);读取:_COOKIE[‘c1’][‘k1’]
2) v a l u e / / c o o k i e 的值 s t r i n g ;而 s e s s i o n 的 v a l u e 没有限制可以是数组 3 ) value // cookie 的值 string ;而 session 的value没有限制可以是数组 3) value//cookie的值string;而sessionvalue没有限制可以是数组3)expire//过期时间,单位, 秒,当前时间戳加上秒数, time()+3600,//有效时间1小时. time()+604800,一周时间
4) p a t h . / / 有效默认为当前根目录及所有的子目录有效路径 , 5 ) path . // 有效默认为当前根目录及所有的子目录有效路径, 5) path.//有效默认为当前根目录及所有的子目录有效路径,5)domain // 有效域名. 默认为当前的域名, 如: www.abc.com

PS: setcookie() 函数之外,您还可以使用 header() 函数来设置 Cookie。它相对来说更底层,因为需要手动构建 Set-Cookie 头信息并发送给浏览器。这种方式相对复杂,一般情况下建议优先选择 setcookie() 函数。

拓展:
设置cookie的三种方法

获取COOKIE的方法

在 PHP 中,获取 Cookie 的方法主要有两种:

使用 $_COOKIE 超全局数组:

PHP 中的 $_COOKIE 超全局数组用于获取客户端发送的 Cookie 值。当客户端向服务器发送请求时,其中包含了之前设置的 Cookie 值,这些值会存储在 $_COOKIE 超全局数组中。
通过 $_COOKIE[‘cookie_name’] 的方式可以直接获取特定 Cookie 的值。

使用 $_SERVER 超全局数组:

可以通过 $_SERVER 超全局数组中的 HTTP_COOKIE 变量来获取客户端发送的所有 Cookie。
您可以使用 $_SERVER[‘HTTP_COOKIE’] 访问所有的 Cookie 数据,然后根据需要解析其中的特定 Cookie 值。

删除COOKIE的方法

第一种:setcookie(‘名’,’’,time()-1); //将值设置过期
第二种:setcookie(‘名’,’’); //将值设置为空
第三种:setcookie(‘名’); //只设置cookie的名称

COOKIE的有效期

有两种存储类型的Cookie:会话性与持久性。Expires属性缺省时,为会话性Cookie,仅保存在客户端内存中,并在用户关闭浏览器时失效。

持久性Cookie会保存在用户的硬盘中,直至生存期到或用户直接在网页中单击“注销”等按钮结束会话时才会失效 。

lsvn2vsz.png

SESSION

什么是SESSION?

在 Web 开发中,“Session”(会话)是指在服务器端存储有关特定用户会话信息的一种方式,用于跟踪用户在网站上的状态和活动。与 Cookie 不同,Session 数据存储在服务器上而不是用户的计算机上,通常通过一个唯一的 session ID 来识别和管理每个用户的会话。

以下是关于 Web 会话的一些重要信息:

  1. 工作原理
    • 当用户访问一个网站时,服务器会为该用户启动一个新的会话并分配一个唯一的 session ID。这个 session ID 通常以 Cookie 的形式发送给用户的浏览器,并在用户的每个请求中返回给服务器。
    • 服务器会使用 session ID 来检索与特定用户相关的会话数据(如登录状态、购物车内容、用户偏好设置等),以便为用户提供个性化的体验。

SESSION的工作原理

  1. 数据存储

    • 会话数据通常存储在服务器端的内存中或持久性的存储介质(如数据库)中。这使得服务器能够动态地跟踪和更新用户的会话信息。
  2. 用途

    • 会话可用于跟踪用户的登录状态,以及在用户访问网站期间维护用户的状态。
    • 可用于实现购物车功能、个性化内容展示和其他基于用户状态的操作。
  3. 安全性

    • 与 Cookie 不同,Session 数据存储在服务器端,因此在安全性方面更可靠,用户无法直接访问或修改会话数据。

总的来说,Session是一种在服务器端跟踪用户状态和活动的机制,可实现个性化的用户体验并帮助网站动态地管理用户的状态信息。

开启SESSION会话功能

session_start();   //在设置和获取时必须要开启session.  

作用:
1.生成一个新的sessionid号
2.判断当前是否已经开启,如果已经开启则不会再生成一个新的id.
3.注意: 一个页面只能开启一次.

获取当前的SESSION的ID值

session_id(); //echo session_id();

获取当前的SESSION的cookie名称

session_name(); 

在这里插入图片描述

删除SESSION数据

unset

lsymuuhf.png

session_destroy()

lsymv32t.png

如何彻底删除SESSION?

1)unset() //将变量销毁
2)session_destroy()//删除当前session文件
3)将session的id删除 (删除cookie)
4)setcookie(名,值,time()-99999);例如:setcookie(session_name(),session_id(),time()-999999);

SESSION的垃圾回收

什么是SESSION的垃圾回收?

在用户非正确退出时,在服务器生成的session文件会一直存在. 时间一长,这样的文件越来越多. PHP引擎会将这部分文件按时间,按一定的比例进行删除.

SESSION垃圾回收时间(session.gc_maxlifetime), //默认是1440, 即24分钟,文件超过24分钟没有再被访问,即为垃圾文件.

在php.ini中相关设置:
回收的概率(session.gc_probability, session.gc_divisor)

session.gc_probability //默认为1

session.gc_divisor//默认为1000

SESSION相关配置

1.session.name = PHPSESSID

2.session.auto_start =0 关闭, 1为自动开启session (不建议自动开启)

3.session.cookie_lifetime=0 //代表浏览器关闭,会话结束

4.session.cookie_path=/ //指定了要session会话 cookie 的有效路径

5.session.cookie_domain //指定了要session会话 cookie 的有效域名

  1. 脚本设置: 注意: 要在session_start()之前进行设置才有效.
    a)ini_set(‘session.cookie_path’, ‘/’);
    b)ini_set(‘session.cookie_domain’, ‘.mydomain.com’);
    c)ini_set(‘session.cookie_lifetime’, ‘1800’);

SESSION和COOKIE的区别

1.存放的位置
2.安全性
3.网络传输量
4.生命周期

lsyn8sf7.png

问题:如果用户将浏览器的cookie禁用,问session还能使用吗?为什么?如何解决?

处理方法: 自己来通过链接来传递session_id;

在链接上通过常量来设置:

lsynekvo.png

SID //是PHP提供的常量 其值为
Session的名称=session的id值
即: Session_name()=session_id()

处理页面:

lsynhjkx.png

拓展:
会话技术Cookie 和 Session

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/404739.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言——指针——第2篇——(第20篇)

坚持就是胜利 文章目录 一、指针和数组二、二级指针1、什么是 二级指针?2、二级指针 解引用 三、指针数组模拟二维数组 一、指针和数组 问(1):指针和数组之间是什么关系呢? 答:指针变量就是指针变量&…

【Linux】一站式教会:Ubuntu(无UI界面)使用apache-jmeter进行压测

🏡浩泽学编程:个人主页 🔥 推荐专栏:《深入浅出SpringBoot》《java对AI的调用开发》 《RabbitMQ》《Spring》《SpringMVC》 🛸学无止境,不骄不躁,知行合一 文章目录 前言一、Java…

C++:string类

标准库中的string类 string类 1. 字符串是表示字符序列的类 2. 标准的字符串类提供了对此类对象的支持,其接口类似于标准字符容器的接口,但添加了专门用于操作单字节字符字符串的设计特性。 3. string类是使用char(即作为它的字符类型,使用…

统计图曲线图绘制方法

统计图曲线图绘制方法 常用的统计图有条形图、柱形图、折线图、曲线图、饼图、环形图、扇形图。 前几类图比较容易绘制,饼图环形图绘制较难。 曲线图的曲线绘制较难,今提供曲线图的绘制方法供参考。 本方法采用C语言的最基本功能: &#xff…

【C++】——模板初阶 | STL简介

前言: 模板初阶 | STL简介 文章目录 一、模板初阶1.1 函数模板1.2 类模板 二、STL简介 (了解) 一、模板初阶 泛式编程(Generic Programming)指的是一种编程范式,其核心思想是编写可以在不同数据类型上通用的代码&#…

Linux系列讲解 —— 【Vim编辑器】在Ubuntu18.04中安装新版Vim

平时用的电脑系统是Ubuntu18.04,使用apt安装VIM的默认版本是8.0。如果想要安装新版的Vim编辑器,只能下载Vim源码后进行编译安装。 目录 1. 下载Vim源码2. 编译3. 安装4. 遇到的问题4.1 打开vim后,文本开头有乱码现象。4.2 在Vim编辑器中&…

通信入门系列——锁相环、平方环、Costas环

微信公众号上线,搜索公众号小灰灰的FPGA,关注可获取相关源码,定期更新有关FPGA的项目以及开源项目源码,包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等 本节目录 一、锁相环 1、压控振荡…

精酿啤酒:麦芽与啤酒花搭配的奥秘

麦芽和啤酒花是啤酒酿造过程中不可或缺的原料,它们的风味和特点对啤酒的口感和品质产生着深远的影响。Fendi Club啤酒在麦芽与啤酒花的搭配方面有着与众不同的技巧和见解,让啤酒的口感更加丰富和迷人。 首先,麦芽的选择是啤酒酿造的关键之一。…

C语言特殊函数

静态函数 背景知识:普通函数都是跨文件可见的,即在文件 a.c 中定义的函数可以在 b.c 中使用。 静态函数:只能在定义的文件内可见的函数,称为静态函数。 语法 staitc void f(void) // 在函数头前面增加关键字 static &#xff…

2024.2.22 C++QT 作业

思维导图 练习题 1>完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面。如果账…

2024年开发者的最好选择!!没有之一

中国银河证券1月23日明确指出:鸿蒙应用将在2024年迎来爆发。 2024年Q2推出开发者Beta版,2024年Q4推出商用版。今年年终将有 5000 款应用完成原生鸿蒙开发,未来支持 50 万款应用。覆盖便捷生活、出行文旅、金融便利、社交资讯、生产力工具、影…

Stable Diffusion 3 Early Preview发布

2月22日,Stability AI 发布了 Stable Diffusion 3 early preview,这是一种开放权重的下一代图像合成模型。据报道,它继承了其前身,生成了详细的多主题图像,并提高了文本生成的质量和准确性。这一简短的公告并未附带公开…

节假日效应prophet预测模型和节假日识别错误

节假日效应是指在特定的节假日或纪念日期间,人们的行为和活动发生变化,从而影响到相应的时间序列数据(股票或者其他)。这种效应可能在多个领域产生影响,包括销售、交通、能源消耗等。 完整代码和数据可关注gzh’financ…

[算法沉淀记录] 排序算法 —— 归并排序

排序算法 —— 归并排序 算法介绍 归并排序是一种分治算法,由约翰冯诺伊曼在1945年发明。它的工作原理是将未排序的列表划分为n个子列表,每个子列表包含一个元素(包含一个元素的列表被认为是有序的),然后重复合并子列表以生成新的有序子列表…

最简单方式把jar打包成Windows服务

废话 😢 将JAR文件转化为Windows服务是一种高效且常见的Java应用部署策略。这种转变赋予了Java应用程序在Windows操作系统上以无界面后台服务模式运行的能力,从而实现了持续、稳定且可靠的功能提供。这种部署方式不仅提升了应用的可用性&#xff0c…

TreeData 数据查找

TreeData 数据查找 最近做需求的时候遇到了这样的一个需求,Tree组件数据支持查找,而且TreeData的数据层级是无限级的 开始想的事借助UI组件库(Ant-design-vue)中的Tree组件的相关方法直接实现,看了下api 发现没法实现,…

Java SpringBoot测试OceanBase

对上篇mysql导入到OceanBase中的数据库进行代码测试,写了个demo包含测试方法,在原mysql库中成功执行,迁移到OceanBase时看是否能不修改业务代码而成功执行测试方法: 代码基于SpringBoot MyBastis测试增删改查、批量新增、多表联…

onnx 1.16 doc学习笔记一:ONNX概念

onnx作为一个通用格式,很少有中文教程,因此开一篇文章对onnx 1.16文档进行翻译与进一步解释, onnx 1.16官方文档:https://onnx.ai/onnx/intro/index.html](https://onnx.ai/onnx/intro/index.html), 如果觉得有收获&am…

【Redis服务搭建】

目录 Redis的修改配置启动以及参数调优Redis的常用基本操作Redis运维监控命令Redis的配置的动态更新和写入Redis的多用户管理Redis的慢日志Redis禁用危险命令和压测工具Redis持久化存储1.Redis的RDB持久化存储2.Redis的AOF持久化存储 Redis的主从复制redis的哨兵实现主从自动切…

信号信号槽

三、信号槽 概念 信号和槽是两种函数,这是Qt在C基础上新增的特性,类似于其他技术中的回调的概念。 信号槽通过程序员提前设定的“约定”,可以实现对象之间的通信,有两个先决条件。 通信的对象都是在QOBject类中派生出来的。 QOBje…