PHP和MySQL Web开发读书笔记---在PHP中使用会话控制

1.PHP会话是通过唯一的会话ID来驱动,会话ID是一个加密的随机数字,它由PHP生成,在会话的生命周期中都会保存在客户端,它可以保存在用户机器的cookie里,也可以通过URL在网络上传递

2.cookie就是由一段有脚本在客户端保存的信息,可以通过发送一个包含特定数据并且具有如下格式的HTTP标题头

  Set-Cookie:NAME=VALUE;[expire=DATE;][path=PATH][domain=DOMAIN_NAME;][secure]

上述语句将会创建一个名为name、值为value的cookie,除了该参数,其他参数都是可选的,expire参数域设置该cookie的实效日期,如果不设置,cookie将永远有效,除非手工删除;path和domain域和起来指定URL或与cookie相关的URL;securte关键字的意思是在普通的HTTP连接中不发送cookie

3.可以创建cookie的两个函数setcookie()和header()

4.当使用PHP会话的时候,不必手动设置cookie,会话函数可以完成该操作,可以使用session_get_cookie_params()函数来查看由会话控制设置的cookie内容,它将返回包含元素$lifetime,$path,$domain[,securte];同样的,可以使用session_set_cookie_params()来设置会话cookie的参数

5.除了用cookie来保存会话ID,还可以将会话ID添加到URL中。在php.ini文件设置了session_use_trans_sid指令,就可以自动实现它,但开启该指令会带来安全上的风险;或者也可以手动将会话ID嵌入到链接中,会话ID通常保存在常量SID中,如<a href="link.php?<?php echo strip_tags(SID); ?>">!在这里使用strip_tags()函数能避免一些跨站点的攻击

6.会话的基本步骤:开始一个会话---注册一个会话变量---使用会话变量---注销变量并销毁变量,下面一一详解

7.开始一个会话:第一种方法是调用session_start(),该函数将先检查会话ID是否已存在,如果不存在,则创建一个,如果存在则将这个已经注册的会话变量载入;第二种方法是将PHP设置成当有用户访问网站的时候就自动启动一个会话,只需在php.ini文件中开启session.auto_start选项,但该方法有一个很大的缺点:启用该设置将导致无法使用对象作为会话变量,因为该对象的类必须在创建该对象的会话开始之前载入(这里有点想不明白,等待高人求解吧)。

8.注册会话变量:要创建一个会话变量,只需在这些数组中设置一个元素,如下$_SESSION['myvar']='aaa',以上代码创建会话变量只有在会话结束或手动重置它时才会生效,根据php.ini文件对会话gc_maxlifetime指令设置,该会话也可能过期,该指令将确定会话的持续时间,超过时间,该会话将本垃圾回收器回收

9.使用会话变量:使用一个会话变量很简单,只需通过$_SESSION超级全局数组即可。当使用对象作为会话变量时,在调用session_start()函数会重新载入会话变量之前,必须包含该类对象的定义,这样,PHP就知道如何构建这个会话变量。

10.注销变量并销毁变量:要注销一个会话变量,可以使用unset($_SESSION['MYVAR']),我们不能用这种方法注销整个数组,因为这样会禁用会话功能,要一次注销所有变量可以使用$_SESSION=array()再使用session_destory来清除会话ID

11.跟会话相关的配置选项:

选项名 默认值 效果
session.auto_start 0(被禁用) 自动开启会话
session.cache_expire 180 为缓存中的会话页设置当前时间,精确到分钟
session.cookie_domain none 指定会话cookie中的域
session.cookie_lifetime 0 cookie会话ID将在用户的机器上延续多久。默认值0表示延续到浏览器关闭
session.cookie_path / 在会话cookie中要设置的路径
session.name PHPSESSID 会话的名称,在用户系统中用作会话名
session.save_handler files 定义会话数据保存的地方,可以将其设置为一个指向一个数据库,但是要自己编写函数
session.save_path "" 会话数据存储的路径。更通常情况下,传递给存储的参量由session.save_handler函数来处理和定义
session.use_cookie 1(允许使用) 配置在客户端使用cookie的会话
session.cookie_secure 0(被禁用) 确定是否应该在安全连接中发送cookie
session.path_function 0(MD5) 允许指定用来生产会话ID的哈希算法。"0"表示使用MD5(128位);"1"表示SHA-1(160位),这种设置是在PHP5中引入的
posted @ 2013-05-28 21:44  山贼一名  阅读(271)  评论(0编辑  收藏  举报