cookie数据存放在客户的浏览器上,session数据放在服务器上
cookie
如果浏览器使用的是 cookie,那么所有的数据都保存在浏览器端,
比如你登录以后,服务器设置了 cookie用户名(username),那么,当你再次请求服务器的时候,浏览器会将username一块发送给服务器,这些变量有一定的特殊标记。
服 务器会解释为 cookie变量。
所以只要不关闭浏览器,那么 cookie变量便一直是有效的,所以能够保证长时间不掉线。
cookie 用法:
setcookie("user","zy",time()+3600); 设置user为zy,一小时之后失效;
$_COOKIE['user']; 取回user值(名字)
setcookie("user","",time()-3600); 删除cookie,第二个参数为空,第三个时间设置为小于系统的当前时间即可.
Session
是存放在服务器端的类似于HashTable结构(每一种web开发技术的实现可能不一样,下文直接称之为HashTable)来存放用户数据;
作用:实现网页之间数据传递,是一个存储在服务器端的对象集合。
原理:当用户请求一个Asp.net页面时,系统将自动创建一个Session;退出应用程序或关闭服务器时,该Session撤销。系统在创建Session时将为其分配一个长长的字符串标识,以实现对Session进行管理与跟踪。
session 用法:
用户信息保存到session前,先启动;
session_start(); 启动session
$_SESSION['user']="zy"; 设置用户名
unset($_SESSION['user']); 销毁用户名
session_destory(); 失去已经存储的session的数据
cookie 和session 的区别:
除了上文提到的储存位置不同外还有以下几点:
cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗考虑到安全应当使用session。
session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能考虑到减轻服务器性能方面,应当使用COOKIE。
单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。(Session对象没有对存储的数据量的限制,其中可以保存更为复杂的数据类型)
如何检查登录的是哪个用户
登录后会把用户的信息,比如用户id或token等等存入到session和cookie中,其中session存在服务器,cookie存在浏览器中。在访问网页时,浏览器会自动带着此网页上的cookie去访问此网页,这是cookie会去服务器中寻找与之匹配的session,来确定登录的是谁。