Session与Cookie的区别

首先说下什么是cookie?
cookie中的参数注要包括:名字,值,过期时间,路径和域名。路径与域名一起构成cookie的作用范围。
如果说若不设置过期时间,则表示这个cookie的生命期为浏览器会话期间,即代表关闭浏览器窗口,cookie就会随之消失。
另外在存储的时候,会话cookie一般不存储在硬盘上而是保存在内存里,虽然这种行为并不是规范规定的。若设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie仍然有效直到超过设定的过期时间。存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而对于保存在内存里的cookie,不同的浏览器有不同的处理方式。
另外不同的浏览器所存储的cookie大小也是不一样,例如:
IE浏览器(7,8)每个域名cookie限制为50个
Firefox每个域名cookie限制为50个
Opera每个域名cookie限制为30个
Cookie注意事项:
1.SetCookie()之前不能有任何html输出,就是空格,空白行都不行
2.SetCookie()之后,你在当前页面调用echo $_COOKIE[‘name’]不会有输出,必须刷新或到下一个页面在过期之前才可以看到cookie值
3.由于cookie信息存储于用户的计算机中,name就有可能伪造或修改cookie,从而造成cookie欺骗,一般可以对cookie的值进行加密,来预防欺骗.读取cookie的时候,对cookie解密即可.
4.Cookie是保存在客户端的,用户禁用了cookie,你的Cookie自然也就没有作用了
再来说下什么是Session?
session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构来保存信息。
当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了一个session标识,(称为session id),如果已包含则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来。如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应中返回给客户端保存。保存这个session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器。一般这个cookie的名字都是类似于SEEESIONID。但cookie可以被人为的禁止,则必须有其他机制以便在cookie被禁止时仍然能够把session id传递回服务器。
Session函数分析:
1.session_register() 在sessin生命周期中,使用全局变量名称将全局变量注册到当前的session中,所谓注册,就是变量填入到$_SESSION中,值为NULL,他不会对session文件有任何的IO操作,只是影响$_SESSION变量
2.session_unregister() 作用相反
3.session_unset() 释放当前内存中已经创建的所有$_SESSION变量,但不删除文件以及不释放对应的sessionID
4.unset() ($_SESSION)–是指在整个页面(page)生命周期都能操作$_SESSION数组,再次访问无法获取到
5.session_destory() --注销session,取出session生命周期,删除session文件,但不影响$_SESSION变量当session生命周期结束,session_register(),session_unset()
Session_register()不能操作,而$_SESSION依然是一个全局变量,他们脱离了映射关系,当再次打开页面检测全局变量为空
最主要的区别:
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
5、所以个人建议:将登陆信息等重要信息存放为SESSION,其他信息如果需要保留,可以放在COOKIE中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值