会话简介:HTTP(超文本传输协议)定义了通过万维网(WWW)传输文本、图形、视频和所有其他数据所有的规则,HTTP 是一种无状态的协议,说明每次请求的处理都与之前或之后的请求无关,虽然这种简化实现对于HTTP 的普及做出了卓越的贡献,但对于希望创建复杂的Web 应用程序的开发人员来说,这点有点困扰,为了解决这个问题,出现了一种在客户端机器上存储少量信息(cookie). 由于cookie 大小限制、数量及其他原因,开发人员又提出了一种解决方案:session 会话处理。 一.Cookie的应用 设置cookie:setcookie()函数可以在客户端生成一个cookie 文件,这个文件可以保存到期时间、名称、值等. 创建cookie,代码如下:
参数1:cookie 名称 参数2:cookie 值 参数3:cookie 过期时间 查看cookie 打开火狐浏览器:工具–页面信息-安全-查看cookie,可以查看到当前的cookie信息. 读取cookie,代码如下:
删除cookie,代码如下:
使用Cookie 的限制: 1、必须在HTML 文件的内容输出之前设置. 2、不同的浏览器对Cookie 的处理不一致,且有时会出现错误的结果. 3、限制是在客户端的,一个浏览器能创建的Cookie 数量最多为30 个,并且每个不能超过4KB,每个WEB 站点能设置的Cookie 总数不能超过20 个. 二.Session会话处理 在使用session 会话处理,必须开始session,使用session_start()开始会话. 创建session 并读取session,代码如下:
判断session 是否存在,代码如下:
删除session,代码如下:
销毁所有session,代码如下:
cookie与session的区别和关系 存储位置: 1.session存储在服务器位置上,可以通过php.ini里面配置session相关配置 2.cookie存储在客户端上. php.ini里面关于session和cookie有关的配置 1,session.use_cookie = 1 是否采用Cookie方法传递session id值,默认是1,表示启用. 2,session.name = PHPSESSID 不管是Cookie传递sessioin_id,还是GET方法传递session_id,都需要使用键值,他们的格式分别是Cookie:sess_name=session_id;和/path.php?sess_name=session_id,其中sess_name就是由这里指定的. 3,session.use_only_cookies = 0 表示只使用Cookie 的方法传递session id。我们说过,传递cookie的方法,除了cookie,还有GET方法,GET方法是不安全的方法。在用户端禁用了cookie的时候,会采用GET方法传递session_id,可以通过这个设置尽用GET方法传递session_id。 4,session.cookie_lifetime = 0,session.cookie_path = / 以及session.cookie_domain = 如果使用Cookie方法传递session_id的话,这里分别指定了cookie有效域、目录和时间。分别对应setcookie()函数的形参$expire、$path和$domain。其中cookie_lifetime=0表示直到关闭浏览器才删除Cookie。还可以使用session_set_cookie_params()函数修改这些值。 5,session_name([string $name]) 获取或更新session_name。如果传了name,则表示不使用默认的名称PHPSESSID(由session.name)指定,否则获取当前session_name。注意:如果设置session_name,则必须在session_start()之前调用才生效。 6,session_id([string $id]) 与session_name()类似,但它是读取或者设置session_id的方法,同样,设置session_id的话,必须在session_start()之前调用才有效. 7,session_set_cookie_params()和session_get_cookie_params() 通过session_set_cookie_params()可以重新设定session.cookie_lifetime,session.cookie_path以及session.cookie_domain这三个php.ini设置,而session_get_cookie_params()则是获取这些设定的值. (责任编辑:最模板) |