关于PHP的session和cookie合作使用的问题

绿水本无忧 发布于 2015/04/13 11:39
阅读 256
收藏 2
PHP
刚刚接触php,大概了解了一下session和cookie的关系和区别,但是看到不少项目都是既使用cookie,又使用session,我想了解一下,他们之间共同使用的优势是什么,共同使用的机制又是什么呢?

以下是问题补充:

@绿水本无忧:新手,提问可能有点小白,希望大神们不要介意,真心想学好,在线等 (2015/04/13 11:42)
加载中
0
OSC首席键客
OSC首席键客

引用来自“OSC首席键客”的评论

不是用cookie传递session id吗?

引用来自“wuyudeai123”的评论

对,我也是看到了这种做法才感到困惑,不知道这样做的优势是什么。session不是放在服务器端嘛,如果会话中断,那么这个session是不是会被销毁?销毁了之后,cookie传递的session_id还能够继续使用不?
这有什么好困惑的!我感觉理所应当啊!
http不是无状态的吗?session不是就是用来保持状态的吗?
一个session代表一个客户端,我要怎么来区分你哪个请求对应那个客户端?当然是session ID了,那我怎么知道你这个请求是那个session ID呢?当然就是cookie了,每个请求cookie是自动会发送给服务器的,服务器拿到它之后他就知道是你了。
如果回话过期了,cookie里面的session id当然就没用了,如果是访问的一个需要认证的网页上面,体现在网页上面就是跳转到登陆页面了。
而且用cookie来传递session id只是其中一种方式而已,还可以通过附加在每个url的后面来传递。
0
南湖船老大
南湖船老大

简单、使用率不高,修改不频繁的东西用session,简单易用,安全性也高,如登录验证码

复杂的东西,使用频率高的,可以用cookies,修改方便,而且天生不存在集群问题,如用户登录鉴权信息。

0
OSC首席键客
OSC首席键客
不是用cookie传递session id吗?
0
碳素云信息技术
碳素云信息技术
session是服务端用,客户端不可见,不可读不可写,而cookie是客户端可读写,服务端也可以读写 cookie根据不同的设定可以跨域,可以跨帐号,session是用来存储会话信息的,生命周期跟cookie不一样
0
绿水本无忧
绿水本无忧

引用来自“OSC首席键客”的评论

不是用cookie传递session id吗?
对,我也是看到了这种做法才感到困惑,不知道这样做的优势是什么。session不是放在服务器端嘛,如果会话中断,那么这个session是不是会被销毁?销毁了之后,cookie传递的session_id还能够继续使用不?
0
绿水本无忧
绿水本无忧

引用来自“碳素云信息技术”的评论

session是服务端用,客户端不可见,不可读不可写,而cookie是客户端可读写,服务端也可以读写 cookie根据不同的设定可以跨域,可以跨帐号,session是用来存储会话信息的,生命周期跟cookie不一样
是的,我就是看到了一个用cookie存储session_id的用法,我想了解一下,如果浏览器被关闭,那么这个会话不就被销毁了么,那么cookie存储的session id还能使用吗?
绿水本无忧
绿水本无忧
回复 @碳素云信息技术 : 哦哦,那我是不是可以这么理解,其实这种cookie存储session id的方法,就是把登录信息存在服务器端cookie里,并且提供一个session id,而这个session id其实是服务器端cookie一个判断用户登录状态的唯一标识,只要这个标识是唯一的,那么就可以根据客户端cookie中的session id来检测这个用户的登录状态
碳素云信息技术
碳素云信息技术
能,这就是cookie的生命周期与session不一样的地方。
0
绿水本无忧
绿水本无忧

引用来自“南湖船老大”的评论

简单、使用率不高,修改不频繁的东西用session,简单易用,安全性也高,如登录验证码

复杂的东西,使用频率高的,可以用cookies,修改方便,而且天生不存在集群问题,如用户登录鉴权信息。

额,集群问题··超过我的理解范围了,百度了一下,还是懵懵懂懂的,不过大大说的session和cookie的区别我理解了!谢!
0
方棱
方棱

Cookie就是你的皮夹子,存随身要用的东西,空间少但存取灵活,而且丢了就是别人的了。

Session表示银行,存重要的东西,而且很安全,但每次存取都要跑一趟银行(网络开销)。

你在自己皮夹子里放什么都行,但里面至少要有一张银行卡(SESSIONID),当你去银行办事时,都要出示这张卡。

0
绿水本无忧
绿水本无忧

引用来自“方棱”的评论

Cookie就是你的皮夹子,存随身要用的东西,空间少但存取灵活,而且丢了就是别人的了。

Session表示银行,存重要的东西,而且很安全,但每次存取都要跑一趟银行(网络开销)。

你在自己皮夹子里放什么都行,但里面至少要有一张银行卡(SESSIONID),当你去银行办事时,都要出示这张卡。

很形象!谢!那这个时候  银行是不是也会把一个人的相关信息也存在一个皮夹子里保存一段时间,当这个人出示他的银行卡的时候,就可以不用再从银行的数据库里拿信息,而是直接从皮夹子里去取?(在cookie没过期的情况下)
方棱
方棱
如果对方相信你皮夹里的个人信息是正确的,那就可以。否则还是要你去趟银行给个证明书。
返回顶部
顶部