php中session和cookie的区别

本文详细对比了Session与Cookie的工作原理及应用区别,包括作用、流程、保存内容与位置、生命周期等方面,并介绍了安全性特点及PHP配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

session与cookie的区别:
从作用上:都是为了保存用户会话的;
从流程上看:它们是共同工作的,它们必须通过同一个标志符号session_id的传递共同工作,如果禁止了cookie、session_id,要以_GET传递;
从保存内容上看:它们都保存了session_id。同时它们也可以保存其他内容,如:登陆后的用户名,或者加入购物车的商品;
从程序中设置和获取的方式看:它们都是超全局变量,可以跨页面获得和设置;
从保存的生命周期看:它们都有过期时间。都可以设置过期时间。
    默认是浏览器关闭。除了在运行程序中修改,也可以在php.ini中修改
session生命周期:所有session同样,默认1440秒,页面关闭失效
cookie生命周期:可以为每个cookie的值设置不同;
session过期时间设置方法:
1)设置cookie的PHPSESSID的过期时间;
   setcookie("PHPSESSID",session_id(),time()+24*60*60);
2)修改php.ini配置问题
    session.gc_maxlifetime:存活秒数。默认1440
    session.gc_probability:session文件清除几率的 分子
    session.gc_divisor:session文件清除几率的 分母
从保存位置看:
    它们默认都是保存在硬盘上。可以通过php.ini等设置,保存到数据库等地方
session保存在服务器的硬盘,
cookie保存在客户电脑的硬盘上
从保存大小限制看:
session文件的保存,通常无限的
cookie文件的保存,通常为4K
从可操作的语言看:
session文件:只有php可以操作
cookie文件:php和javascript都可以操作。
所以cookie内容,可以作为这两个语言分享数据的地方
从操作的锁定看:session操作,是独占性访问。当前浏览器只要有一个页面(包括该页面的超链接,点击弹出的页面),在使用session,则当前浏览器的其他页面,如果也使用session,就要等待,直至第一个页面访问结束
cookie操作,非独占性访问
从安全性看:通常session安全一点,因为保存在服务端,客户端无法看见保存的内容
而cookie差一点,因为保存在客户端,可以被看见,容易被篡改。
但当知道了其运行机制,就明白了:sesssion安全是受限于cookie中session_id不泄露为前提的


在php.ini配置文件中有一组会话配置选项,可以对其进行设置。
session.auto_start = 0; 在请求启动时初始化session
   设置为1时,无需每次使用session之前都要调用session_start(),但启用后,则不能把对象放入会话中,因为类定义必须在启用会话之前加载以在会话中重建对象。
session.cache_expire = 180;设置缓存中的会话文档在n分钟后过时
session.cookie_lifetime = 0 设置按秒记的cookie的保存时间,相当于设置session的过期时间,为0时表示直到浏览器被重启
session.cookie_path=/;cookie的有效路径
session.cookie_domain = ;cookie的有效域
session.name = PHPSESSION; 用在cookie里的sessionId名字
session.save_handler=files;用于保存/取回数据的控制方式
session.save_path = /tmp; 保存路径
session.use_cookies = 1; 是否使用cookies
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值