一、Cookie简介
Cookie的主要作用是在客户端和服务器端之间传递信息。Cookie中最重要的参数为Cookie名和Cookie值,除此之外,还有用于设置生存期的expires、用于设置路径的path、用于设置域的domain和用于设置安全性的 secure也是Cookie中的参数。
对于操作系统而言,Cookie就是一个文本文件,这个文件中记录着客户端计算机与服务器端计算机通信所需要的信息,IE 保存在C:Documents and Settings[用户名]Cookies , Firefox保存在C:Documents and Settings[用户名]Application DataMozillaFirefoxProfiles****.default、
从JavaScript的角度来看,可以通过Document对象的cookie属性来读取或设置这些信息,可以直接在地址栏中输入 javascript:alert(document.cookie); 查看当前cookie值。
cookie是是不分语言的,用JS写的cookie,可以用PHP读,反之亦然。
cookie中的参数说明
名称:每一个Cookie都有自己的名称,
值:通过Cookie名称所存储的Cookie值,也就是存放在Cookie中的具体信息。
生存期:也就是Cookie的有效日期。在默认情况下,一个Cookie的生存期就是浏览器窗口关闭的时间。如果想要该Cookie在浏览器窗口关闭后还可以使用,就必须要为该Cookie设置生存期,也就是失效的日期。
路径:出于安全方面的考虑,通常一个网页所创建的Cookie只能被与该网页在同一目录或子目录下的所有网页访问,而不能被其他目录下的网页访问。例如由"http://www.example.com/a/sample.htm"所创建的Cookie,可以被"http://www.example.com/a/"下的所有网页访问,但不能被"http://www. example.com/"下或"http://www.example.com/b/"下的任何网页访问。如果想要可以被访问 可以通过设置Cookie路径的方法设置访问
域:同样是出于安全方面的考虑,在默认情况下,即使设置了Cookie的路径,也只能在同一个域中访问Cookie,不同域之间的网页是不能互相访问Cookie的。如"www.example.com"和"a.example.com"两个服务器之间的网页就不能互相访问Cookie。可以通过设置Cookie域的方法让"www.example.com"和"a.example.com"两个服务器之间的网页互相访问Cookie。
安全:在默认情况下,Cookie信息的传递使用的是没有加密的明码传递方式,如果Cookie中的信息比较重要,这就要求对Cookie信息进行加密。如果将Cookie的secure设为true,那么该Cookie就只能在HTTPS或其他安全协议中传输,可以增加安全性。
二、 php中的cookie
1、语法:
Parameter参数 | Description描述 |
---|---|
name |
Required. Specifies the name of the cookie 必要参数。指定cookie的名称 |
value |
Optional. Specifies the value of the cookie 可选参数。指定cookie值 |
expire |
Optional. Specifies when the cookie expires. 可选参数。指定cookie的过期时间 如果这个参数没有设置,那么cookie将在session结束后(即:浏览器关闭时)自动失效 |
path |
Optional. Specifies the server path of the cookie 可选参数。指定cookie所在的服务器路径 如果路径设置“/”,那么cookie将在整个域名内有效;如果路径设置为“/test/”,那么cookie值在“test”目录下或其子目录下有效;默认的路径是cookie所处的当前目录 |
domain |
Optional. Specifies the domain name of the cookie. 可选参数。指定cookie的域名: 当你把cookie的域名设置为“.example.com”时,cookie在“.example.com”的所有子域名中有效;当你把cookie的域名设置为“www.example.com”时,cookie在“www”的所有子域名中有效 |
secure |
Optional. 可选参数。指定cookie是否需要在HTTPS连接下传输。如果cookie需要在HTTPS连接下传输,则设置为True;否则设置为False。默认值为False |
2、 setcookie举例
简单的: setcookie("mycookie","value_of_mycookie");
带失效时间的: setcookie("withExpire","Expire_in_1_hour",time()+3600);
什么都有的:setcookie("FullCookie","Full_cookie_value",time+3600,"/forum","www.123.com",1);
3、 接收和处理cookie
PHP对cookie的处理是全自动的,和处理FORM变量的原则一样.当然也可以使用PHP全局变量,$HTTP_COOKIE_VARS数组.
例: echo $mycookie;
echo $cookie Array[0];
echo count($cookie Array);
echo $HTTP_COOKIE_VARS["mycookie"];
4、 删除cookie
(2)设置失效时间在当前时间之前,如time()-1;
三、 cookie的一些注意问题
cookie是面向路径的.缺省path属性时,WEB服务器页会自动传递当前路径给浏览器.指定路径会强制服务器使用设置的路径.
在一个目录页面里设的cookie在另一个目录的页面里是看不到的.