会话控制的思想是指能够在网站中根据一个会话跟踪用户。
PHP中的会话是通过唯一的会话ID来驱动的,会话ID是一个加密的随机数字。由PHP生成,在会话的生命周期中都会保存在客户端(可以使cookie或者通过url网络传递),会话ID就像一把钥匙,它允许我们注册一些特定的会话变量,这些变量的内容保存在服务器端。如果我们拥有了会话ID(从cookie或者url中拿到),就可以通过该会话ID保存在服务器端的会话变量。默认情况下,会话变量保存在服务器上的普通文件中。
cookie==保存在客户端的一小段信息,header可以这么设置:Set-Cookie:Name =value;(创建一个名为name,值为value的cookie,只有这个事必填)expries=date(失效日期为date,如果不设置并不删除该cookie,cookie将永远有效);paht=Path;domain=DOMAIN_NAME(前面这两货用来指定URL或与cookie先关的url);secure(如果存在这个关键字,意思是在普通的HTTP连接中不发送cookie);
PHP中设置cookie,参数同上setcookie(name,value,expire,path,domain,secure);,如需删除cookie,也可以用这个函数,如:setcookie("user",time()-3600);
在PHP中,可以用函数session_get_cookie_params() 来查看会话控制设置的cookie内容,将返回一个包含各种元素的相关数组。
php.ini中所有会话配置选项:
session.auto_start 默认禁用,自动启动会话,好像是对对象支持不好
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.use_cookies 默认1 允许使用,配置在客户端使用cookie的会话
session.cookie_secure 0 被禁用 确定是否应该在安全连接中发送cookie
会话流程:
1.开始一个会话:session_start();该函数检查是否存在一个会话变量,不存在创建,存在就将其载入使用。
在PHP.ini文件中设置session.auto_start 选项为ON,当有用户访问时就自动启动一个会话。
2.注册会话变量:$_SESSION['bianliang']=1; 这样就可以注册了,这个创建的会话变量只有在会话结束或者手动重置 的时候才会失效,当然,也可以在php.ini中设置gc_maxlifetime,指定会话的持续时间,超过该时 间,变量将会被垃圾回收。
3.使用会话变量:在前面调用session_start();然后直接调用$_SESSION['bianliang']
4.注销会话变量:unset($_SESSION['bianliang']);session_destroy();注销所有变量,清除会话。