1.为什么要使用会话控制技术?
Web是通过HTTP协议进行实现的,HTTP协议是无状态协议,HTTP协议没有内部机制来记录会话状态,同一用户请求页面两次的时候,HTTP协议不会认为两次请求都来自同一用户,会认为是两次请求独立。若用户执行登陆操作,再次请求页面,HTTP协议不会认为该用户之前做过登陆。因无法保持该用户之前登陆状态,故无法在不同页面之间进行用户跟踪与保持。会话控制技术就是为了解决这样的问题,它的思想是允许服务器跟踪同一客户端做出的连续请求。
2.会话控制技术的实现方式
(1)通过GET参数传递,把用户状态信息通过GET参数方式传递给服务端。缺点:1.用户信息会暴露在地址栏中不安全。2.传递过程中参数有可能会丢失。所以是一种拙劣的方式.
(2)Cookie,cookie是一种 服务端发送给客户端的片段信息,再存储在客户端浏览器的内存或硬盘上的 技术
Cookie有读、写、删除操作
写:
读取 $_COOKIE
删除 让其过期 setcookie( $name , '' , time()-1000 )
Cookie的优缺点
优点:信息保存在客户端,不占用服务端资源,效率高
缺点:不安全,用户若禁止Cookei的使用,服务端就无法识别用户信息
(3)Session session是将用户信息存储在服务端的技术,一般不会独立使用,会配合session使用
session的操作
使用session之前,必须使用session_start()
读写 $_SESSION;
清空 $_SESSION$_SESSION = []; 或 $_SESSION = NULL;
删除session文件 session_destroy()
删除session文件后,要把删除保存sessionId的cookie文件
php.ini文件中session的设置
session.save_handler session的存储据柄 (memcache,redis,mysql)
session优缺点
优点:信息安全
缺点:占用服务器资源,分布式问题,多台服务器中的session无法共享,可用redis解决
若是cookie被用户禁用,可通过session_name()=session_id()来传递sessionid
或用SID传递,若cookie开启,SID是空,若关闭SID与session_name()=session_id()相等
Session的存储方式
默认存储在服务器文件中,可使用session_set_save_handler(),存储到mysql , memcache , redis服务器中
网友评论