第9堂课 cookie与会话控制
session
cookie和session是数据的临时档案馆,cookie将数据存储在客户端,实现数据持久存储,session将数据存储在服务器端,保证数据在程序的单次访问中持续有效。有了cookie和session就可以解决httpweb协议的无状态问题,实现数据在不同页面之间的传递和数据在客户端的持久存储。
session==会话
在计算机专业属语中,session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经历的时间。
创建会话: 启动会话,注册会话,使用会话,删除会话
php启动会话有两种方式:
1.是使用session_start()函数
session_start() 使用这个函数前,浏览器不能有任何输出,
2.使用session_register()函数为会话登录一个变量来隐含地启动会话,
使用session_register(string name) name是指变量的名称。使用这个函数,要将php.ini文件中的register_globals选项设置成on
注册会话:会话变量被启动后,全部保存在数组$_SESSION中,通过数组$_SESSION创建一个会话变量很容易,只要直接给该数组添加一个元素即可。
使用会话
删除会话:
删除单个会话,删除会话变量的方法同删除数组中指定元素相同,都可以通过unset()函数完成,unset($_SESSION['user'])。
如果通过unset()函数一次注销整个数组(unset($_SESSION))那么会禁止整个会话功能。而且没有办法恢复,用户也不能在注册$_SESSION变量。
所以,要是删除多个会话,或注销所有的会话变量,使用以下两种方式:
1.删除多个会话:将一个空的数组赋值给$_SESSION,如$_SESSION=array()
2.结束当前会话,:如果整个会话结束,就可以使用session_destroy()函数结束当前的会话,语法session_destroy(), 这样就清空会话中的所有资源,撤底销毁session
配置php会话:
在客户端支持cookie的前提下,控制session的生命周期:一是通过session来完成,别一个种是通过cookie来完成
基于session的生命周期:有两种方法,一是应用session_set_cookie_params()函数,二是应用setcookie()函数。
session_set_Cookie_params() 该函数的功能是设置session和cookie的参数,其语法如下:session_set_cookie_params(cookie的生存期,[cookie的有效路径[cookie的效城[cookie在安全的范围内被发送]]])
session_set_Cookie_params()函数必须在session_start()函数之前调用。
setCookie()函数的主要职责是创建cookie。但同样可以控制session的过期时间。
以上都是在客户端支持cookie的前提下,控制session的生命周期,一旦客户端禁止cookie,那么session变量就不能够在页面间传递,解决办法4种:
1.通知客户打开cookie
2.php.ini文件中session_use_trans_sid=1或者编译时打开-enables-trans-sid选项,让php自动跨页面传递session_id
3.以GET或post方式,通过表单元素传递SESSION_ID
4.通过文件或者数据库传递SESSION_ID
会话的高级应用
如果将session保存在,session的临时文件,或数据库,需要使用php中的session_save_path()函数,他是用来取的或者重新配置当前session的存储路径。
session_save_path([string path]) path参数表示重新设置session的存储路径,如果不设置参数,表示直接获取当前的session的存储路径。
session缓存 : 是指将网页中的内容临时存储到客户端ie的文件夹下。
1.缓存函数session_cache_limiter([设置缓存的方式])
2.缓存时间函数session_cache_expire([设置session的过期时间]) 单位分钟,默认过期时间180分钟
还有这两个函数必须在session_start()函数前使用。
session数据库存储,将session_ID存储于数据库中操作:
session_set_save_handler() 参数有:找到存储路径,关闭数据库,读取session键值,key对应session_id,和对应的变量,注销session对应的session键值,清除过期session记录。
cookie
cookie是一种在远程客户端存储数据并以此来跟踪和识别用户的机制,简单说就是web服务器暂时存储在用户硬盘上的一个文本文件,并随后被web浏览器读取。当在次访问web网站时,网站通过读取cookie文件记录这位访客的特定信息,从而作出响应。例如,不用输入用户名密码就可以登陆等。。这种文件的格式:用户名@网站地址[数字]。txt
创建cookie应用的是setcookie()函数,由于cookie是http头标的组成部分,作为头标必须在页面其他内容之前发送,也必须最先输出,所以setcookie()函数之前不能有任何内容输出。
setcookie(名称[值,过期时间,cookie在服务器的路径,有效域名,是否指向安全https])
访问cookie 在php中应用全局数组$_cookie[]读取客户端cookie的值,$_cookie是经由http cooies方法提交至脚本的变量。
删除cookie 有两种方法:1.使用setcookie()函数,另一种就是在客户端手动删除
setcookie()删除cookie只需将第二个参数设置成空,将第3个参数过期时间设置小于系统时间就可以。例:setCookie("mr","",time()-1);
复习:
1.什么是session和cookie,他的作用是什么,他们有什么区别
2.session怎么使用:启动会话,注册会话,使用会话,删除会话
3.session的生命周期的设置
4.session的高级应用,如存储在数据库,和缓存的应用。
5.cookie的使用,创建,访问,删除