文章教程

9.1Cookie

9/17/2020 9:49:37 PM 人评论 次浏览

9.1 Cookie

Cookie是在HTTP下,服务器或脚本可以维护客户端信息的一种方式。Cookie是Web服务器保存在用户浏览器上的“小甜饼”(一个很小的文本文件),通过它可以包含有关用户的信息,常用于保存用户名、密码,个性化设置,个人偏好记录等。

9.1.1 Cookie的优缺点

当用户访问服务器时,服务器可以设置和访问Cookie的信息。Cookie保存在客户端,通常是IE或Firefox浏览器的Cookie临时文件夹中,可以手动删除。注意:如果浏览器上Cookie太多,超过了系统所允许的范围,浏览器也会自动对它进行删除。Cookie的优缺点如下所示。

1.优点

(1)Cookie默认的生命周期起始于浏览器开始运行时,结束于浏览器终止运行时,此时的Cookie是存放在客户端的内存,但也可以设置Cookie的生命周期(通常以秒为单位),将它写入客户端的磁盘,这样就不必担心Cookie自动消失而遗漏某些信息。

(2)Cookie存放在客户端的内存或磁盘,不会占用Web服务器资源。

(3)Cookie可以记录浏览用户的个人信息,如此一来,网站的制作者就可以根据Cookie的信息来了解浏览者。

2.缺点

(1)如果遇到不支持Cookie的浏览器,或浏览用户禁止Web服务器在客户端写入Cookie,那么Cookie就不能发挥它的作用了。

(2)Cookie存放在客户端,可能会被浏览用户删除或拒绝写入。

(3)Cookie可能会形成安全上的威胁,导致个人信息被窃取。

9.1.2 Cookie的使用

当客户访问某个基于PHP技术的网站时,在PHP中可以使用setcookie()函数生成一个Cookie,系统经处理把这个Cookie发送到客户端并保存在C:\Documents and Settings\用户名\Cookies目录下。Cookie是HTTP标头的一部分,因此setcookie()函数必须在HTML本身的任何内容送到浏览器之前调用。这种限制与header()函数一样。当客户再次访问该网站时,浏览器会自动把C:\Documents and Settings\用户名\Cookies目录下与该站点对应的Cookie发送到服务器,服务器则把从客户端传来的Cookie自动地转化成一个PHP变量。在PHP 5中,客户端发来的Cookie将被转换成全局变量。可以通过$_COOKIE['xxx']读取。接下来分别介绍Cookie的相关操作。

1.创建Cookie

创建Cookie通过setcookie()函数。setcookie()函数向客户端发送一个HTTP Cookie。Cookie是由服务器发送到浏览器的变量。Cookie通常是服务器嵌入到用户计算机中的小文本文件。每当计算机通过浏览器请求一个页面,就会发送这个Cookie。setcookie()函数定义如下。

  setcookie(name,value,expire,path,domain,secure)

(1)name参数必需。规定Cookie的名称。

(2)value参数必需。规定Cookie的值。

(3)expire参数可选。规定Cookie的有效期。

(4)path参数可选。规定Cookie的服务器路径。

(5)domain参数可选。规定Cookie的域名。

(6)secure参数可选。规定是否通过安全的HTTPS连接来传输Cookie。

注意:有有效期的Cookie保存在客户端硬盘上,没有有效期只保存在客户端的内存。

例9-1 设置Cookie有效期。

  <?php
  		
  		$value = 'something from somewhere';

  		setcookie("TestCookiexyq", $value);
  		setcookie("TestCookie", $value, time()+3600);  /* expire in 1 hour 	
  		C:\Users\xyq\AppData\Roaming\Microsoft\Windows\Cookies\Low*/
  		setcookie("TestCookietwo", "hello ", time()+3600, "/");
  		setcookie("TestCookiethree", $value, time()+3600, "/", "www. 		
		example.com", 1);//在IE中域名值设置错误,引起Cookie设置无效
  ?>

运行效果如图9-1所示。

image

图9-1 设置Cookie

2.访问Cookie

可以通过$_COOKIE变量访问Cookie,这是PHP内置的全局数组,以下代码首先创建一个Cookie,然后访问Cookie。

例9-2 设置并显示Cookie的内容。

  <?php
  		setcookie("mycookieone","xyq");
  		echo $_COOKIE["mycookieone"];
  	?>

运行效果如图9-2所示。

image

图9-2 访问Cookie数据

注意:需刷新看到结果,因为服务器端每次访问的Cookie是每次请求头中发送给服务器端的。

3.删除Cookie

当用户频繁访问网站时,如果每次访问都添加Cookie,那么会使用户端产生不必要的临时文件,而且Cookie中存放这个人信息,用户的个人隐私受到威胁。这就要求在没有必要的情况下将过期的Cookie删除。删除Cookie的函数为setcookie。使用setcookie()函数删除Cookie,有以下两种方式

(1)调用只带有name参数及value参数值为空字符串的setcookie()。

例9-3 删除Cookie。

  <?php
  		
  		setcookie("delcookie","hello");
  		echo $_COOKIE["delcookie"];
  		setcookie("delcookie","");
  		echo $_COOKIE["delcookie"];
  		
  	?>

运行效果如图9-3所示。

image

图9-3 删除Cookie

(2)使失效时间为time()或time-1,如例9-4所示。

例9-4 设置Cookie失效时间。

  <?php
  		setcookie("delcookie","hello",time()+3600);
  		
  		setcookie("delcookie","",time()-3600);//刚创建的Cookie没有对应的外	
						      部文件
  		
  	?>

教程类别