cookie
cookie在网站开发里运用的很多,特别是购物网站。cookie可以分为两种,会话cookie(session cookie) 和持久cookie(presistent cookie)。在PHP里,当一个会话开始,服务器会在客户端的浏览器里设置一个cookie用来保存PHP session ID,而cookie的内容被存放在服务器端。会话cookie的有效期通常是持续到会话结束,也就是当你关闭浏览器后,但是你也可以在PHP.INI里改变会话的有效期。通常我们说的cookie是指持久cookie,它是完全保存在客户端的浏览器里,其有效期是在设置的时候定义好。在这篇文章里,我准备介绍持久cookie(以下简称cookie)。
cookie的运用涉及到信息的保存和提取,当然我们可以使用数据库来完成这项工作,但是对于一些小信息,比如email,使用cookie显得更加快捷。cookie是存在客户端的,因此首先想到的是使用Javascript来设置和提取cookie。W3Cschool上提供两个函数,使用它们基本上就可以满足我们的需要。我把它们稍作修改,如下:
// 全局变量domain = '.61dh.com'; //如果不设代表当前页面的域名path = '/'; //通常使用根目录,当然你可以可特指一个路径secure = 0; //对于SSL网站(https),需要设置安全cookie,这时可以把值设为‘1’//setCookie,设置cookie,需要三个变量,cookie名称,cookie值,和有效时长function setCookie(c_name,value,expiredays){var exdate=new Date();exdate.setDate(exdate.getDate()+expiredays);document.cookie=c_name+ "=" +escape(value)+((domain.length > 0) ? ';domain=' + domain : '') +((path) ? ';path=' + path : '') +((secure) ? ';secure' : '') +((expiredays==null) ? "" : ";expires="+exdate.toGMTString());}//getCookie,获取相关cookie的值function getCookie(c_name){if (document.cookie.length>0){c_start=document.cookie.indexOf(c_name + "=");if (c_start!=-1){c_start=c_start + c_name.length+1;c_end=document.cookie.indexOf(";",c_start);if (c_end==-1) c_end=document.cookie.length;return unescape(document.cookie.substring(c_start,c_end));}}return "";}
有了上面的函数,你就可以根据需要来保存一个数据(setCookie),然后再根据需要取回数据(getCookie), 例如:
setCookie('email',adamcai@live.com,365);//保存email,有效期365天var email = getCookie('email');//获取email
另外一种方法是使用PHP,这要根据实际需要,有时你可能会觉得使用PHP更方便。PHP自带有函数:
setcookie(name,value,expire,path,domain,secure)
- name:必须,cookie名称
- value:必须,cookie值
- expire:任择。指定的cookie时到期。单位是秒,例如: 3600 * 24 * 30将设置Cookie过期30天。如果此参数没有设置时,cookie将在会话结束时(当浏览器关闭)到期,
- path:任择。指定服务器路径的Cookie如果设置为“ / ”时, cookie将可在整个域内有效。如果设置为“ /测试/ ”时, cookie将只在测试目录及所有子目录有效。默认值是当前目录。
- domain:任择。指定域名的cookie 。为了使现有的cookie的所有子网域内有效,你应该将其设定为 ".example.com"。如果不设置,将使用当前页的域名。
- secure:任择。指定是否cookie应用于安全的HTTPS连接。如果设为true,那么cookie将只可以在安全连接存在的情况下设定。默认值为false 。
$_COOKIE['name'] //用来获取cookie的值。
//设置cookiesetcookie("email","adamcai@live.com”, time()+3600*24); //时常为24小时//获取cookieif(isset($_COOKIE("email")){$email = $_COOKIE("email");}
标签: Javascript, PHP



0 条评论:
发表评论
指向此帖子的链接: