了解cookie的实际存储对真正了解cookie, session等概念有更好的帮助。
我们知道Session是存在服务器端的,而cookie是存在客户端的。这里准确理解应该是说由客户端的浏览器管理。浏览器管理着所有客服端的数据。不同的浏览器实现不同,主要功能除了实现DOM的显示和渲染,以及内嵌的javascript引擎等功能外,对客服端的数据管理也是一大功能。
由于cookie 等客户端数据由各浏览器管理,从Cookie的存储方式来分,可以看成有两种Cookie:持久化cookie(内存cookie)和非持久化cookie(硬盘cookie)。
非持久化cookie存放在浏览器内存中,浏览器关闭后,这类cookie的生命周期结束。这类cookie也有称为会话cookie。会话结束后它也结束。不设置过期时间。
而持久化cookie就是由浏览器器存放在硬盘中,它们存储的位置也相应的跟着浏览器application Data走。这类cookie除非用户手工清理或到了过期时间,否则不会被删除。
这是不同浏览器的cookie存储大致位置:
chrome存放cookie的路径: C:\Documents and Settings\Administrator\Local Settings\Application Data\Google\Chrome\User Data\Default firefox存放cookie的路径:C:\Documents and Settings\Administrator\Local Settings\Application Data\Mozilla\Firefox\Profiles\xxxxxxxxx.default\OfflineCache 360技术浏览器的cookie在: C:\Documents and Settings\Administrator\Local Settings\Application Data\360Chrome\Chrome\User Data\Default
cookie = new Cookie("cookiename","cookievalue"); cookie.setMaxAge(3600); cookie.setPath("/"); response.addCookie(cookie);
<?php setcookie("user", "Alex Porter", time()+3600); ?>
function SetCookie(name,value) { var Days = 30; //此 cookie 将被保存 30 天 var exp = new Date(); //new Date("December 31, 9998"); exp.setTime(exp.getTime() + Days*24*60*60*1000); document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString(); } function getCookie(name)//取cookies函数 { var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)")); if(arr != null) return unescape(arr[2]); return null; } function delCookie(name)//删除cookie { var exp = new Date(); exp.setTime(exp.getTime() - 1); var cval=getCookie(name); if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString(); }
Cookie[] cookies = request.getCookies();//这样便可以获取一个cookie数组 for(Cookie cookie : cookies){ cookie.getName();// get the cookie name cookie.getValue(); // get the cookie value }
<?php // Print a cookie echo $_COOKIE["user"]; // A way to view all cookies print_r($_COOKIE); ?>