php中cookie与session的区别点总结

admin3年前PHP教程37

本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑

无论是在系统运维还是 PHP 开发人员的面试中,经常会被问到 Session 和 Cookie 在 PHP 中的区别?下面我们就来总结一下:

Cookie 仅由客户端生成、管理并使用,PHP 只是发出指令要求客户端如何生成 Cookie、何时过期等,但是客户端不一定会按照 PHP 的指令办事。

Cookie 不是很安全,不法分子可以通过分析本地的 Cookie 进行 Cookie 欺骗。考虑到安全问题,建议将用户的重要信息存放在 Session 中,其它不重要但需要保留的信息可以存放在 Cookie 中。

Session 是用户进入某个网站到关闭浏览器这段时间的会话,默认以文件形式存在服务器磁盘中,所以设置过多的 Session 会影响磁盘的性能,也可以用 Memory 引擎存入 MySQL,因为内存引擎读写速度快,现在也可以指定用 Redis 来处理 Session,这样更快,效率更高。

Session 的收回机制是被动的,一般来说,一旦关闭浏览器 Session 也就被 PHP 自动回收了,但有时即使设置了过期时间并且关闭浏览器也不一定会删除 Session,比如设置多目录多层级保存 Session 时,这时需要通过 PHP 脚本手动删除 Session。

通常 Cookie 与 Session 是绑定的,即用户在没有禁用 Cookie 时,Cookie 一般会保存 Session ID 及 Session 生存周期,如果用户删除 Cookie 一般会退出系统;如果没有禁用 Cookie 关闭浏览器 Session 也会立即失效,要重新登录系统。

Cookie 与 Session 一般应于标识用户、权限认证、存储简单数据、还有就是利用 Cookie 实现单点登录。

Cookie 存储的数据在不同的浏览器会有不同的限制,一般在同一个域名下,Cookie 变量数量控制在 20 个以内,每个 Cookie 的值大小控制在 4kb 以内。Session 值没有大小和数量限制,但如果数量过多,会增大服务器的压力。另外,Cookie 保存的内容是字符串,而 Session 保存的数据是对象。

Session 不能区分路径,同一个用户在访问一个网站期间,所有的 Session 在任何一个地方都可以访问到;而 Cookie 中如果设置了路径参数,那么同一个网站中不同路径下的 Cookie 是不能互相访问的。

COOKIE和SESSION的区别

(1)存储位置:Cookie存储在客户端浏览器中,相对不安全;Session内容所在文件存储在服务器中,一般在根目录下的tmp文件夹中,相对更安全。

(2)数量和大小限制:Cookie存储的数据在不同的浏览器会有不同的限制,一般在同一个域名下,Cookie变量数量控制在20个以内,每个cookie值的大小控制在4kb以内。session值没有大小和数量限制,但如果数量过多,会增大服务器的压力。

(3)内容区别:cookie保存的内容是字符串,而服务器中的session保存的数据是对象。

(4)路径区别:session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到;而cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问不到的。

内容扩展:

1、存放的位置

cookie保存在客户端,session保存在服务器端的文件系统/数据库/memcache等。

2、安全性

session因为保存有服务器端,安全性无疑更高一些。

3、网络传输量

cookie通过网络在客户端与服务器端传输,会占用一些带宽;而session保存在服务器端,不需要传输。

4、保存时间(生命周期),以20分钟为例

cookie的生命周期是累计的,从创建时就开始计算,20分钟后生命周期就结束,即cookie无效;

session的生命周期是间隔的。从创建时开始计时,如果20分钟内,没有访问过session,那么session会在20分钟时失效。而如果在20分钟内的任一时间访问过session,那么,session的生命周期将重新开始计算。

5、session和cookie的生效路径

cookie在默认情况下,cookie只在当前文件的目录下生效,一般需要设置setcookie的第四个参数为根目录,使得整个网站所在页面都生效;session默认情况下是根目录下生效(可以通过查看cookie的PHPSESSID信息知道,或者通过php.ini文件里的session.cookie_path来设置)。

到此这篇关于php中cookie与session的区别点总结的文章就介绍到这了,更多相关php中cookie与session有什么区别内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:php/php-ask-485249

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

如何让PHP的代码更安全

目录概述越权漏洞1. 水平越权2. 垂直越权3. 上下文越权JWT 的 Token 需要二次加密LFI (本地文件包含)XSSCSRF (跨站请求伪造)概述攻击者通过构造恶意SQL命令发送到数据库,如...

如何选择适合自己的江西GPU服务器

选择适合自己的GPU服务器是一个重要的决策,因为它直接影响到你的工作效率和成果。下面是一些指南,帮助你选择适合自己的GPU服务器。确定你的需求在选择GPU服务器之前,你需要明确你的需求是什么。你需要考...

宁波高防服务器租赁价格多少比较合理

宁波高防服务器租赁价格多少比较合理?宁波高防服务器租赁价格的合理性取决于多个因素,例如服务器配置、带宽、防护能力、数据中心位置等。因此,价格会因供应商和服务器方案而异。一般来说,相同配置和服务质量的服...

境外多ip服务器推荐那个地区的好

选择境外多IP服务器所在的地区应该根据你的具体需求和业务情况而定。以下是一些你可以考虑的因素:目标用户和市场:如果你的目标用户和市场主要在欧洲,那么选择一个位于欧洲的服务器可能会更好。同样的,如果你的...

详解PHP接口签名验证

概览在设计签名验证的时候,一定要满足以下几点:可变性:每次的签名必须是不一样的。时效性:每次请求的时效性,过期作废。唯一性:每次的签名是唯一的。完整性:能够对传入数据进行验证,防止篡改。下面主要分享一...

海外跨境网络服务,跨境直播电商的首选!

我们提供合法合规稳定的海外跨境网络服务,为用户提供高效、可靠、安全的网络加速方案。在该方案中,我们采用的专线加速SDWAN技术是一种基于专用物理线路的网络加速技术,与VPN翻墙技术不同。专线加速SDW...