session和cookie的联系

1.区别

     session存在于服务器,以文件的形式,安全,量大

     cookie是基于浏览器(客户端)的,相对不安全,大小限制,

2.session_start()的时候做了什么(A区间:生成)

     a.服务器生成了对应的session_id;

     b.服务器生成了对应session_id对应的文件:文件内存储此session_id对应的用户的设置的变量等信息

[root@localhost tmp]# vim sess_14ts81p47ooq1amutuohdt3nl1 

isLogin|i:1;username|s:11:"18520638660";ad_|a:3:{s:7:"isLogin";i:1;s:8:"username";s:5:"admin";s:8:"userinfo";a:8:{s:2:"id";s:1:"1";s:8:"password";s:32:"e10adc3949ba59abbe56e057f20f883e";s:8:"username";s:5:"admin";s:5:"email";s:12:"admin@qq.com";s:11:"create_time";s:19:"2018-06-13 14:38:10";s:6:"status";s:1:"1";s:10:"is_deleted";s:1:"0";s:8:"is_admin";s:1:"1";}}h_|a:2:{s:7:"isLogin";i:1;s:8:"username";s:6:"linxun";}

     c.当session_start()的时候其实自动setcookie(session_name(), session_id(), time()+3600, '/');后面两个参数根据服务器上的配置而自动给。这一步最为重要,因为这样子你的cookie中就有了session的捆绑。

3.每次访问项目都会调用session_start()不会一直生成新的session?(B区间:捆绑)

   a.session_start()时,会先进行cookie中的session_name的获取,如果其中的session_name不为空,意味着session被保留在cookie中,从而进行了捆绑

   b.以上由于cookie中的session_name的存在,此次的session_start()并不会执行以上步骤2的任何操作,而是进行绑定了cookie中对应的session_name即捆绑对应服务器的session_id以及对应的session_id对应的文件

4.setcookie(session_name(), '', time()-3600, '/');是什么作用

   将浏览器中的cookie中的session捆绑取消,session_start()重新进入其A区间生成,且重新进行cookie中session_name的赋值捆绑

5.捆绑session之后的数据访问

   由于上面的不走明显的说明的session捆绑的步骤,就不详细说了,

   捆绑了session_id,每次访问项目(即访问服务器)都是带着session_id的,也就是绑定了对应的session_id对应的session文件

   所以通过$SESSION进行的变量的增删改查都是对自己的这个session_id对应的文件进行操作

   即:用户a自己进行CURD的文件为session_id为1的文件

          用户b自己进行CURD的文件为session_id为2的文件

          他们都进行了各自的$SESSION['username'] = a;(a用户操作)

                                           $SESSION['username'] = b;(b用户操作)

   但是他们获取的$SESSION['username']是各自自己所设置的,互不干扰,因为他们带过来的钥匙不一样,打开的柜子不一样,柜子里面变量名同为鞋子的物品不一样,一个是nike,一个是adidas。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值