cookie的滞后性与session比较
当我们在当前页面设置cookie后,在当前页面取cookie是无法取到的
只有当我们再次刷新页面,再次发起http请求,我们就会取到cookie的值
Session机制,在当前页面设置session,是可以取到session的值
实验:
当我将浏览器cookie禁止后,当前页面设置的session依旧可以取出来
代码:
结果:
图Session_id1
但当我在另一个页面获取session值的时候,我们发现浏览器显示结果是:
图Session_id2
通过图session_id1与session_id2,我们可以轻易发现两次获取的session_id不一致。故第二次取不到前一次设置的session值。因为:浏览器请求时没有携带phpsessionid
小结:
1、当前页面设置cookie,当前页面获取不到,因为,cookie存储在浏览器端,当我们在php里通过setcookie设置后,浏览器端Response Cookies被更改,即响应给浏览器更改的值,但此时Request Cookies为空,如果,这时获取cookie值,cookie为空。
2、当我们,再次发起请求时,浏览器将携带 Request Cookies,php将得到cookie的值
3、当我们设置session后,在当前页面是可以取到session的值
机制是:
Session_startà产生session_id
Session_idà在服务器上取session值à有值
如果浏览器没有开启cookie存储,则浏览器无法记录phpsessionid
再次请求另外一个页面
Session_start()开启à重新生成一个session_id
说明:因为,当前请求,浏览器没有记录phpsessionid
新的session_idà在服务器上取session值à无值
4、用客户端记录phpsessionid的作用,如果客户端不通过cookie记录phpsessionid那么,即使我们在服务器端保存了session数据,事实是,我们也可以保存session数据,但我们无法区分是那一个客户端的数据,所以就会存在有cookie保存phpsesssionid这个机制。