Cookie

了解Cookie
Cookie是在HTTP协议下,将服务器传递给浏览器的少量数据保存到用户浏览器的一种方式。通过这种方式,即使在浏览器被关闭和连接中断的情况下,用户仍然可以维护状态数据。
更确切的说,Cookie是保存在用户硬盘上的由字符串组成的小文本文件。
在Cookies文件夹下,每个Cookie文件都是一个简单而又普通的文本文件,而不是程序。Cookies中的内容大多经过了加密处理,因此,表面上看来只是一些字母和数字的组合,而只有服务器的CGI处理程序才知道它们的真正含义。
Cookie可以让web页面更有针对性,更加友好,可以保存关于用户的重要信息,包括使用的语言,阅读和音乐偏好,访问站点次数,购物车中的物品记录等。
常用于以下三个方面:
1:记录访客的某些信息。
2:在页面之间传递变量。
3:将所查看的Internet页存储在cookie临时文件夹中,这样可以提高以后浏览的速度。
注:
一般不要用Cookie来保存数据或其他大量数据,并非所有的浏览器都支持Cookie, 并且数据信息是以明文文本的形式保存在客户端计算机中,因此最好不要保存敏感、未加密的数据、否则会影响网络的安全性



创建Cookie
Cookie是经由服务器端的程序通过HTTP请求和响应发送到浏览器的,是HTTP头标的组成部分,而头标必须在页面其他内容之前发送。即使是一个HTML标记或者echo语句,甚至一个空行都会导致程序出错。
在PHP中通过setcookie()函数创建cookie,至少接受一个参数,也就是cookie的名称(如果只设置了名称参数,那么在远程客户端上的同名Cookie会被删除)
语法如下:

cookie 的名称指定为相同名称的变量。例如,如果被发送的 cookie 名为 "name",会自动创建名为 $user 的变量,包含 cookie 的值。

必须在任何其他输出发送前对 cookie 进行赋值。

如果成功,则该函数返回 true,否则返回 false。

setcookie(name,value,expire,path,domain,secure)
参数 描述
name 必需。规定 cookie 的名称。
value 必需。规定 cookie 的值。
expire 可选。规定 cookie 的有效期。
path 可选。规定 cookie 的服务器路径。
domain 可选。规定 cookie 的域名。
secure 可选。规定是否通过安全的 HTTPS 连接来传输 cookie。
例如:

setcookie("TMCookie",'PHP从基础到项目实战');
setcookie("TMCookie",'PHP从基础到项目实战',time()+60);//设置Cookie有效时间为60s
//设置有效时间为60s,有效目录为/tm/,有效域名为107lab.com及其所有子域名
setcookie("TMCookie",'PHP从基础到项目实战',time()+60,"/tm/",".107lab.com",1);

注意:在HTTP协议中规定,每个站点向单个用户最多只能发送20个Cookie



读取Cookie
在PHP中通过超级全局数组$_COOKIE[]来读取浏览器端的Cookie值。
例如:
if(!isset($_COOKIE["visit_time"])){//检测Cookie文件是否存在,如果不存在
    setcookie("visit_time",date("Y-m-d H:i:s"));//设置一个Cookie变量
    echo "欢迎您第一次访问本网站!";
}else{//如果存在
    setcookie("visit_time",date("Y-m-d H:i:s"),time()+60);//设置Cookie失效时间
    echo "您上次访问本网站的时间为".$_COOKIE["visit_time"];//输出上次访问网站的时间
    echo '<br>';
}
echo "您本次访问网站的时间为:".date("Y-m-d H:i:s");

运行结果为:
欢迎您第一次访问本网站!您本次访问网站的时间为:2016-04-04 16:33:30  
刷新一下,运行结果为:
您上次访问本网站的时间为2016-04-04 16:33:30
您本次访问网站的时间为:2016-04-04 16:33:58  

注:
如果未设置Cookie的到期时间,将在关闭浏览器时,自动删除Cookie数据。如果为Cookie设置了到期时间,浏览器将会记住Cookie数据,即使用户重启计算机,只要没到期,再访问网站时也会有效果。



删除Cookie
当Cookie被创建以后,如果没有设置它的失效时间,其Cookie文件会在关闭浏览器时被自动删除。那么如何在关闭浏览器之前删除呢,方法有两种
1:应用setcookie()函数删除Cookie
删除cookie和创建cookie的方法基本类似,删除Cookie也使用setcookie()函数。删除Cookie只需要将setcookie()的第二个参数设置为空值,第三个参数将Cookie的过期时间设置为小于系统当前时间即可。
例如:
setcookie("name","",time()-1)
注:
把过期时间设置为0,可以直接删除cookie。
2:应用浏览器在选项或者设置中,直接删除相应的cookie



注意事项总结
(1)在应用setcookie()函数创建Cookie之前,不能有任何HTML输出,即使是空格、空行也不行,否则会产生错误代码。
(2)通过setcookie()函数创建Cookie后,在当前页应用echo $_COOKIE["name"]不会有任何输出。必须是在刷新后或者到达下一个页面时才可以看到Cookie值。因为setcookie()函数执行后,会向客户端发送一个Cookie,如果不刷新或者浏览下一个页面,客户端就不能将Cookie返回。
(3)使用Cookie的限制。如果Cookie不设定过期时间,那么它的生命周期为浏览器会话的期间,只要关闭浏览器,cookie就会消失。这种cookie被称为会话cookie,一般不保存在硬盘上,而是保存在内存中。
如果设置了过期时间,那么浏览器就会把cookie存到硬盘中,再次打开浏览器依然有效,知道它的有效期超时。
cookie在浏览器中有数量和大小的限制,一般最多为30个,并且每个cookie的容量不能超过4kb,每个web站点能设置的cookie总数不能超过20个。
(4)cookie是保存在客户端的,如果用户禁用了cookie,那么cookie也就失去了作用。因为浏览器会拦截cookie。




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值