资源预览内容
第1页 / 共25页
第2页 / 共25页
第3页 / 共25页
第4页 / 共25页
第5页 / 共25页
第6页 / 共25页
第7页 / 共25页
第8页 / 共25页
第9页 / 共25页
第10页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第6章 COOKIE ?6.1.3 使用COOKIEsetcookie()与setrawcookie()函数设置的COOKIE,都作为数组的单元,存放在预定义变量 $_COOKIE中。而$_COOKIE变量的作用域是全局的,所以没有经过限制的COOKIE值,可以网站的所有 页面中使用。实际上在6.1.1小节中,已经演示了COOKIE的使用方法,其使用方法与访问数组的方 法是一样的。访问COOKIE的演示代码如清单6.3所示。 清单 使用COOKIE $value) echo “$key=$value“; echo “在双引号内使用键名访问COOKIE值:“; echo “姓名:$_COOKIEname,性别:$_COOKIEsex,年龄:$_COOKIEage“; echo “使用.组成字符串:“; echo “姓名:“.$_COOKIE“name“.“,性别:“.$_COOKIE“sex“.“,年龄:“.$_COOKIEage; ?6.1.4 删除COOKIECOOKIE在使用完后,有些情况下为了安全方面的考虑,需要删除COOKIE值。在PHP中,没有专门用 于删除COOKIE的函数,但是可以使用setcookie()和setrawcookie()函数,把已知COOKIE的值设置 为空,达到删除的效果。再一个方法就是使用删除数组单元的方法,同样可以删除COOKIE。下面演 示删除COOKIE的几种方法,代码如清单所示。 清单 删除COOKIE $value) echo “$key=$value“; ?6.1.5 COOKIE的简单应用 虽然与COOKIE有关的函数很少,但是灵活的使用 COOKIE,可以实现很多精彩的功能。网站使用 COOKIE最多的情况是用户认证,以及用户的个性 化浏览。本小节通过COOKIE实现用户认证和用户 的个性化浏览,来介绍COOKIE在实际应用中的方 法。6.2 SESSION的相关函数 SESSION也称为会话期,其是存储在服务器上的一 小段文件,用于存储用户的相关信息。SESSION之 间使用会话标识来区别,每1个SESSION都有唯一 的一个标识。使用SESSION也可以完成类似于 COOKIE一样的工作,本节主要介绍与SESSION有关 的函数。6.2.1 SESSION的设置函数在Windows下的PHP安装中,已经默认支持了SESSION功能。但是要 在脚本中使用SESSION,根据实际情况,还需要进行相关的设置。 下面介绍session_save_path()函数的使用方法,此函数可以在 SESSION生效之前,设置SESSION文件的保存目录,演示代码如清 单6.6所示。 清单6.6 session_save_path()函数的使用方法 6.2.2 注册SESSION变量使用session_register()函数,可以注册一个或多个变量,这些变量都以单元的形式 ,保存在$_SESSION数组中。由于$_SESSION是一个数组,也可以使用数组添加单元的 方式,来为SESSION增加新变量。下面演示增加SESSION变量的方法, 清单 增加SESSION变量的方法 6.2.3 访问SESSION变量由于SESSION变量,都是以单元的形式,存储在$_SESSION全局变量中,所 以使用访问数组的方法,就可以访问SESSION变量。 SESSION变量注册后,需要经过初始化后才能使用,这一点与COOKIE是不 同的。初始化SESSION的函数是session_start()。下面演示 session_start()函数的使用方法,以及访问SESSION变量的方法,代码如 清单所示。 清单访问SESSION变量的方法 $value) echo “$key=$value“; echo “单独访问SESSION变量:“; echo $_SESSION“var3“; ?6.2.4 删除SESSION变量在使用完SESSION变量后,需要对已经注册的SESSION进行删除,以减少对 服务器的资源使用。下面介绍删除SESSION的方法,代码如清单所示。 清单 删除SESSION变量的方法 6.2.5 设置SESSION 标识 当session_start()函数运行后,将会为当前的 SESSION变量创建一个唯一的标识,这个标识存储 在COOKIE中,当在别的页面运行session_start() 时,session_start()函数将根据COOKIE中的标识 ,从SESSION文件中恢复变量到$_SESSION数组。 SESSION的标识是函数产生的,使用session_id() 函数可以取得或设置SESSION标识,而 session_regenerate_id()函数,可以创建一个新 的标识,替换当前SESSION的标识。下面演示这两 个函数的使用方法,代码如清单所示。6.2.6 设置SESSION名称session_start()函数在从COOKIE中读取标识时,会根据SESSION 的名称来读取COOKIE中取应的值。SESSION的名称默认是 “PHPSESSID”,使用session_name()函数可以查看或重新设置 SESSION名称。下面演示session_name()函数的使用方法,代码如 清单所示。 清单 设置、查看SESSION名称 “; print_r($_COOKIE); echo “; ?6.2.7 SESSION的缓冲控制方式 在PHP的配置文件中,可以设置SESSION的缓冲方 式。也可以使用SESSION函数控制缓冲方式。 session_cache_limiter()函数有1个参数,是可 选参数,当函数没有参数时,返回当前缓存的管 理方式,当设置参数时,可根据实际情况选择下 面3种值: nocache:禁止客户端和中间路由器缓存本页。 public:允许客户端和中间路由器缓存本页。 private:仅允许客户端缓存本页,不允许中间路 由器缓存本页。6.2.8 SESSION的编码 SESSION的运行机制很简单,在使用SESSION函数 注册变量后,SESSION的值通过编码,以文件的形 式,保存到服务器指定上当,SESSION的值保存在 COOKIE中,然后使用session_start()函数根据条 件,解码保存的数据,并恢复到SESSION中。 在整个过程中的编码和解码工作,也可以通过 SESSION函数来完成。session_encode()函数可以 把当前SESSION中的数据编码,并返回为一个字符 串。session_decode()函数可以把指定的字符串 解码,并恢复到SESSION中。下面演示这2个函数 的使用方法,6.2.9 SESSION的COOKIE参数在上面的章节中提到了SESSION标识,其是使用COOKIE来保存的,在 SESSION函数中,也提供了两个函数来操作和SESSION有关的COOKIE值。 session_set_cookie_params()函数,用于设置保存SESSION名称的COOKIE ,其有5个参数: 第1个参数是必选参数,其值是COOKIE的有效期,单位为秒。当这个 COOKIE失效后,与之对应的SESSION也会失效。 第2个参数是可选参数,其值是COOKIE的有效路径,当COOKIE在指定路径 下有效时,与之对应的SESSION才可以使用。 第3个参数是可选参数,其值是COOKIE的有效域名,当COOKIE在指定域名 下有效时,与之对应的SESSION才可以使用。 第4个参数是可选参数,用于设置是否使用加密方式传输COOKIE值,默认 值是FALSE。 第5个参数是可选参数,用于设置是否只使用HTTP协议访问COOKIE值,如 果其值是1或TRUE,其他脚本语言,如:JavaScrrpt就不能访问这个 COOKIE,这个参数默认的值是FALSE。6.3 SESSION的应用 SESSION虽然与COOKIE之间的运行机制不一样,但 是其在实际应用中,都是可以互通的。SESSION不 仅可以完成与COOKIE一样的功能,因为其数据存 储在服务器上,在安全性方面也优于COOKIE。本 节主要介绍在使用SESSION时,错误处理与安全方 面的问题。6.3.1 SESSION的错误处理SESSION数据被初始化后,其数据存储在$_SESSION数组中。在实 际应用中,经常会要对未知的变量进行操作,这时就要对数组中 的单元进行检查,防止不存在的单元参与运算。使用isset()函数 ,可以检查数组单元是否存在,也可以使用 session_is_registered()函数,检查SESSION变量是否存在。下 面演示SESSION在使用中,处理错误的方法,代码如清单所示。6.3.2 SESSION应用示例 SESSION相对于COOKIE来说比较安全,经常用于用 户认证。本小节通过SESSION实现用户认证和用户 的个性化浏览,来介绍SESSION在实际应用中的方 法。演示代码如清单所示。 是基于SESSION技术,使用过程编程方法,实现用 户认证的例子。这段脚本与清单中的代码的运行 过程基本上是一样的。只是在记录用户登录信息 时,使用了SESSION,而不是COOKIE。6.4 常见问题 COOKIE的使用需要浏览器的支持,当用户使用的 浏览器不支持COOKIE,或关闭对COOKIE的支持时 ,与COOKIE相关的脚本将会出错。而使用COOKIE 记录会话标识的SESSION,也会因为会话标识的丢 失而失效。下面介绍在这两种情况下,怎么来保 证代码的可运行性。6.4.1 COOKIE失效COOKIE失效主要有两种原因,一种是用户关闭了浏览器对COOKIE的支持, 一种是浏览器本身不支持COOKIE技术。 当网站中使用了COOKIE,也必须使用COOKIE才能运行时,可以检查当前浏 览器是否支持COOKIE或开启COOKIE后,再根据检查的情况,运行下一步代 码。 (1)使用JavaScript检查浏览器是否开启COOKIE支持,代码如下所示: /检查浏览器是否开启COOKIE if(window.navigator.cookieEnabled = false) /显示检查信息 alert(“请打开浏览器的COOKIE支持,再浏览本页“); /导航至其他页面 window.navigate(notcookie.htm); 6.4.2 SESSION的跨页传递 session_start()函数,是根据SESSION标识来读 取数据的,默认情况下,PHP使用COOKIE存储 SESSION标识,如果浏览器的COOKIE被禁用,在初 始页面定义的SESSION,就不能在其他页面使用了 。 在这种情况下,可以通过其他方法来传递SESSION 的标识,来实现SESSION的跨页使用。6.4.2 SESSION的跨页传递(1)使用URL传递SESSION标识,代码如下所示: 传递ID“; ?6.4.2 SESSION的跨页传递 (2)使用表单中的隐藏域来传递SESSION标识。 这种方法与使用URL传递SESSION标识的方法,原 理是一样的。在初始页的表单中,设置一个隐藏 域,隐藏域的值就是当前SESSION的标识,当表单 提交后,其后页面中的脚本,就可以通过表单提 交的变量来获取SESSION标识。 (3)使用文件、数据库等保存SESSION标识,在 跨页过程中取回标识。使用文件、数据库等形式 ,在初始页时保存SESSION标识,在跨页使用时, 可以从其中读取SESS
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号