文章教程

9.9了解cookie

9/17/2020 9:40:31 PM 人评论 次浏览

9.9 了解cookie

下面介绍与session关系密切的另外一个概念cookie的含义和用法。

9.9.1 什么是cookie

cookie的英文原意是小甜饼的意思。顾名思义,cookie是一段可以存储在客户端的小段信息。

可以通过header以如下格式在客户端生成cookie:

  set-cookie:NAME = VALUE;[expires=DATE;][path=PATH;][domain=DOMAIN_NAME;] [secure]

NAME为cookie的名称,VALUE为cookie的值,expires=DATE为到期日,path=PATH; domain=DOMAIN_NAME;为与某个地址相对应的路径和域名,secure表示cookie不能通过单一的HTTP连接传递。

cookie的工作原理是:当一个客户端浏览器连接到一个URL,它会首先扫描本地存储的cookie,如果发现其中有和此URL相关联的cookie,将会把它们返回给服务器端。

9.9.2 用PHP设置cookie

在PHP中,如果手工设置cookie,可以使用setcookie()函数。它的格式如下:

  setcookie(名称,cookie值,到期日,路径,域名,secure)

其中的参数与set-cookie中的参数意义相同。

设置cookie还可以使用header()函数,使用set-cookie设置,但是这个cookie header一定要放在其他header之前。

9.9.3 cookie与session

在浏览器中,有些用户处于安全性的考虑,关闭了其浏览器的cookie功能。cookie将不能正常工作。

使用session可以不需要手动设置cookie,PHP session可以自动处理。可以使用会话管理,及PHP中的session_get_cookie_params()函数来访问cookie的内容。这个函数将返回一个数组,包括cookie的生存周期、路径、域名、secure等。它的格式为:

  session_get_cookie_params(生存周期,路径,域名,secure)

9.9.4 在cookie或URL中存储session ID

PHP默认情况下会使用cookie来存储session ID。但是如果客户端浏览器不能正常工作,就需要用URL方式传递session ID了。如果在php.ini中的session.use_trans_sid设置为启用的状态,就可以自动通过URL来传递session ID了。

不过通过URL传递session ID会产生一些安全问题。如果这个连接被其他用户拷贝并使用,有可能造成用户判断的错误。其他用户可能使用session ID访问目标用户的数据。

或者可以通过程序把session ID存储到常量SID中,然后通过一个连接传递。

教程类别