全方位剖析
回顾真题
考点分析
一网打尽
简述cookie和session的区别及各自的工作机制,存储位置等,简述cookie的优缺点
PHP的会话控制技术
为什么要使用会话控制技术
web是使用http的,而http是无状态的,也就是http没有内置的机制,维护两个事务的状态。所以同一的用户,请求同一界面两次的时候。http不会认为这两次请求来自同一用户,会把他们当做两次请求的独立。会把这两次请求隔离开。
如果用户之前登录过,再次登录的时候,http不认为你已经登录了。
不会保持登录状态。。。而我们的会话控制,就是保持登录状态。
思想就是:允许服务器跟踪同一用户的不同请求。从而完成登录状态的保持。
那会话控制技术,有哪些实现的方式呢?
通过get参数传递
这样不安全。比较拙略
Paste_Image.png
cookie的工作原理
是服务端给客户端的片段信息,再存储到客户端浏览器的内存或者是硬盘当中的技术。(就是存储在我们浏览器里面的文件,这个文件里面包含我们客户端的片段信息,例如登录,或者其他存储信息)
cookie的操作
写操作setcookie($name,$value,$expire,$path,$domain,$secure);
$domain,$secure 域名和是否安全
读取cookie
$_COOKIE(); 是只读的
了解,可以使用数组
setcookie('a[b]','val');
要想删除的话,setcookie($name,'',time()-1000); 让他过期就好了
cookie,的优点和缺点
存储在客户端,所以不会占用服务器的资源
缺点:将数据存储在客户端,所以不建议讲一些敏感的信息,存储到cookie里面,而且用户有权限禁止cookie的使用。。。
session是将使用者相同的信息,存储到服务器当中。用户没有办法禁止session的使用。所以,他的优势,相较于cookie来说,还是比较明显的。但是session并不是完全脱离于cookie的,而是基于cookie的。
Paste_Image.pngsession的操作
开始
session_start();
读取
$_SESSION;
清空
$_SESSION = NULL;
销毁的话
session_destory(); //并且,将sessionid也会删除掉。
session的配置
session.auto_start()
session.cookie_domain
session.cookie_lifetime
session.cookie_path
session.name
session.save_path
session.use_cookies
session.use_trans_sid
如果用户退出的时候,不删除,session会永久在你的浏览器的时候。
这需要我们的垃圾文件定时清理。
session.gc_probaility 垃圾处理机制
session.gc_divisor
session.gc_maxlifetime
session.gc_probaility=1 垃圾处理机制
session.gc_divisor=100
session.gc_maxlifetime=1440.。 超过100次,就会有一次,去清除,,当前的时间戳减去start的时间等于1440的session
session.save_handler 是session存储的句柄是什么
可以存到memcache 或者MySQL啊等等。
session的优点;
它的信息非常的安全
缺点:会占用服务器的内存。
并且它的分布式也是一个问题。redis
传递sessionID的问题。
cookie被禁用之后。
session_name()和session_id()来传递。
<a href='1.php?<?php echo SID;?>'>下个页面</a>
SID 如果cookie可用了的话,他的值是空。。。被禁用了的话,它的值才是
session_name().'='.session_id()
这个东西是比较智能的。
session存储的问题。。
Paste_Image.pngsession_set_save_handler()
可以存MySQL,memcache,redis等。
找不到文件的话,登录状态,会丢失。
Paste_Image.png Paste_Image.png1,存储到服务器
2.通过session_set_save_handler() 存储到memcache或者redis里面或者数据库
遍历的时候session数组。
网友评论