设为首页收藏本站

Scripts 学盟

 找回密码
 加入学盟

QQ登录

只需一步,快速开始

查看: 3595|回复: 8
打印 上一主题 下一主题

session 与 cookie 机制——混混之精辟解读版 [复制链接]

Rank: 8Rank: 8

跳转到指定楼层
1#
momo 发表于 2011-3-30 14:01:08 |只看该作者 |倒序浏览
/mg浴火凤凰(307053741) 11:03:21
一般饿Web页面登陆一次就把信息写入Cookie,打开另一个网页的时候显示的用户名是从Cookie读的吧?

混混@普宁.中国<alvin@iscripts.org> 11:03:57  
这个由网站程序员控制  

混混@普宁.中国<alvin@iscripts.org> 11:04:11  
它喜欢这么做 就这么做  

/mg浴火凤凰(307053741) 11:04:34  
是不是每次提交的时候都需要吧用户名再次提交给服务器啊?

混混@普宁.中国<alvin@iscripts.org> 11:05:08
登录一般记录在 session 中

混混@普宁.中国<alvin@iscripts.org> 11:05:22
所以,你不用每次提交用户名和密码

混混@普宁.中国<alvin@iscripts.org> 11:05:50
如果,有个网站程序员,他不在 session 中记录,也不在 cookie 中记录

混混@普宁.中国<alvin@iscripts.org> 11:05:58
那没办法,你得每次提交

混混@普宁.中国<alvin@iscripts.org> 11:06:16
不过,想是没有人这么傻

/mg浴火凤凰(307053741) 11:07:15
那服务器怎么知道当前用户还在登陆状态?

混混@普宁.中国<alvin@iscripts.org> 11:07:35
这里要从 session 说起

丫丫@合肥.安徽(1433995154) 11:07:46
.net里有其他的东西可以记录,也不一定是session和cookie。不过怎么都是要记在一个地方的,不然没法判断

/mg浴火凤凰(307053741) 11:08:43
我的意思就是在我新打开i一个网页的时候,它怎么知道我已经登陆过没有?

混混@普宁.中国<alvin@iscripts.org> 11:09:03
还是先说 cookie 吧

混混@普宁.中国<alvin@iscripts.org> 11:09:21
假设,我是一台服务器

/mg浴火凤凰(307053741) 11:09:28
我知道session和cookie是哈

/mg浴火凤凰(307053741) 11:09:36
我知道session和cookie是啥

混混@普宁.中国<alvin@iscripts.org> 11:09:36
你,摸摸,宝宝,都是浏览器

/mg浴火凤凰(307053741) 11:09:45
好的

芬芬(517774249) 11:09:50
java和。net 的session cookie 都一样吗?

混混@普宁.中国<alvin@iscripts.org> 11:10:08
你们偶尔会来我家拜访一下

混混@普宁.中国<alvin@iscripts.org> 11:10:56
你们每次来我家的时候,  身上都带有一个口袋,   这个口袋 就叫 cookie

混混@普宁.中国<alvin@iscripts.org> 11:11:23
你们来的时候, 我可以放点东西在你们口袋里头

混混@普宁.中国<alvin@iscripts.org> 11:11:50
并且要求,下次再来我家的时候必须带回来,我要检查

混混@普宁.中国<alvin@iscripts.org> 11:12:33
这就是 cookie 存储了

混混@普宁.中国<alvin@iscripts.org> 11:13:04
cookie 存储,要注意的问题

混混@普宁.中国<alvin@iscripts.org> 11:13:42
1, 东西是放在你们口袋里,   要设定一个过期时间

混混@普宁.中国<alvin@iscripts.org> 11:14:01
隔多久之后,你们再来我家,就不用带了。

混混@普宁.中国<alvin@iscripts.org> 11:14:44
如果,没有设定,浏览器会默认在会关闭所有会话窗口后,就失效

混混@普宁.中国<alvin@iscripts.org> 11:15:33
2. 你们的口袋都不是很大, 我不能放太多的东西

混混@普宁.中国<alvin@iscripts.org> 11:16:59
3. 安全性问题! 东西放在你们口袋里
虽然原则上我可以要求你们不要动里边的东西
但是你们回家后,就一定要动,我也没有办法

混混@普宁.中国<alvin@iscripts.org> 11:17:28
如果,我放了100块在凤凤口袋里,你下次来,说没有啊。。混混你上次只放了1块钱

混混@普宁.中国<alvin@iscripts.org> 11:17:37
或者干脆说,根本没放

混混@普宁.中国<alvin@iscripts.org> 11:17:42
那我亏大了

混混@普宁.中国<alvin@iscripts.org> 11:18:38
好了,。。。  session 了

混混@普宁.中国<alvin@iscripts.org> 11:19:37
因为,有些浏览器老是故意要动  口袋里的东东, 像凤凤

混混@普宁.中国<alvin@iscripts.org> 11:20:02
有些老是要不小心弄丢  口袋里的东东,   像摸摸

混混@普宁.中国<alvin@iscripts.org> 11:20:31
所以,混混又想了一个办法

混混@普宁.中国<alvin@iscripts.org> 11:20:38
叫 session

混混@普宁.中国<alvin@iscripts.org> 11:21:18
你们来我家 串门的时候,   我不放东西在你们口袋里了

混混@普宁.中国<alvin@iscripts.org> 11:21:45
我把东西  放在自个家里,

混混@普宁.中国<alvin@iscripts.org> 11:21:58
然后分别给编上 号码

混混@普宁.中国<alvin@iscripts.org> 11:22:03
叫 session Id

混混@普宁.中国<alvin@iscripts.org> 11:22:43
然后, 用一个小纸条写上这个 session id ,  放你们口袋里

混混@普宁.中国<alvin@iscripts.org> 11:23:35
这样子,你们回家去后,就没带走东西,   只带走了一个小纸条

混混@普宁.中国<alvin@iscripts.org> 11:24:27
我就安心多了。。。

混混@普宁.中国<alvin@iscripts.org> 11:25:19
你们下次来我家的时候,我可以根据你带回来的 session id  , 从自家里找到 上次存好的东西

混混@普宁.中国<alvin@iscripts.org> 11:27:51
session 存储,要注意的问题
1, 理论上只要我家房子够大,就可以放更多的东西, 没有限制
但是如果访客太多,还是会挤爆内存和硬盘的,所以也注意不要给客户分配太大的东西

混混@普宁.中国<alvin@iscripts.org> 11:29:08
2. 给东西编号的时候,不能使用规则性 的号码

混混@普宁.中国<alvin@iscripts.org> 11:29:36
防止,凤凤猜到摸摸的  编号,  下次过来冒领摸摸的 东西

混混@普宁.中国<alvin@iscripts.org> 11:30:12
不过,这个服务器一般都实现好了,不用自己关注,session id的管理

混混@普宁.中国<alvin@iscripts.org> 11:31:21
3.session 也要设定一个合理的过期时间

混混@普宁.中国<alvin@iscripts.org> 11:31:43
像燕子,有可能拿个纸条回家后,就再也不来了

混混@普宁.中国<alvin@iscripts.org> 11:32:09
那如果我不定时清理 放太久又没用到的东西

混混@普宁.中国<alvin@iscripts.org> 11:32:23
我家也会成垃圾堆

混混@普宁.中国<alvin@iscripts.org> 11:33:16
想到的就这些了

混混@普宁.中国<alvin@iscripts.org> 11:33:39
上面就是 session 存储了

混混@普宁.中国<alvin@iscripts.org> 11:33:48
最后,再说一下凤凤的问题

混混@普宁.中国<alvin@iscripts.org> 11:34:39
“我新打开i一个网页的时候,它怎么知道我已经登陆过没有?”

混混@普宁.中国<alvin@iscripts.org> 11:35:44
在打开的多个浏览器窗口时,哪些窗口是建立在同一个session(会话)上的

混混@普宁.中国<alvin@iscripts.org> 11:37:06
session 的保持,   是由浏览器负责维护的

混混@普宁.中国<alvin@iscripts.org> 11:37:28
比如说,   摸摸第一次来我家,   就领到了一个纸条

混混@普宁.中国<alvin@iscripts.org> 11:38:01
我没有告诉他, 这个纸条要留多久
那摸摸下次要不要再带这个纸条过来呢,  这当然是摸摸决定
摸摸如果觉得今天要做的事还没做完
那摸摸就会在第二次过来的时候,再把这个纸条带过来
如果第二次回去后,觉得还有事情得来找我,  那么他第三次来我家,又会再带这个纸条过来
浏览器想保持一个会话,  它会在每次请求的时候,都把 手里头的 session id 再提交上去
浏览器如果不想保持会话,它会在再次访问时,   空着口袋去,重新领一个新的纸条
浏览器保持会话的原则:
--------------------------
1. 在原有窗口,打开同一站点页面
2. 通过点击链接,在新窗口打开同一站点页面
3. 通过提交表单,在新窗口打开同一站点页面
3. 脚本 window.open(....), 在新窗口打开同一站点页面
只要再次访问事件,由页面触发,而且访问的是同一个站点,    那么浏览器会自动的想要保持会话
没了

漠漠(1064087442) 11:54:38
你说的那个纸条,我怎么感觉我以前用的时候把纸条当口袋用了

芬芬(517774249) 11:54:38
可以不可以 用最通俗的语言看、概括概括

混混@普宁.中国<alvin@iscripts.org> 11:55:44
cookie 和 session 的区别就在于:
混混说要给 所有人 发一百块,  然后就真的每人发了 100 块.  ( <--------  这个是 Cookie )
混混说要给 所有人 发一百块,  然后不发, 只给你发了个存折.  ( <--------  这个是 Session )

漠漠(1064087442) 11:57:57
session("username")=ors("username")
session("password")=ors("password")
session("userclass")=ors("userclass")

漠漠(1064087442) 11:58:08
那这是存折还是钱?

混混@普宁.中国<alvin@iscripts.org> 11:59:01
这是发钱
用了发存折的方式,发钱
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
分享分享0 收藏收藏0
过了爱做梦的年纪
轰轰烈烈不如平静

管理员

超级大菜鸟

Rank: 9Rank: 9Rank: 9

2#
Alvin 实名认证  发表于 2011-3-31 00:35:44 |只看该作者
混混说的好不好

使用道具 举报

Rank: 8Rank: 8

3#
momo 发表于 2011-3-31 09:43:35 |只看该作者
回复 2# Alvin


    你要是觉得不好,那我把精辟改成pijing吧!
过了爱做梦的年纪
轰轰烈烈不如平静

使用道具 举报

Rank: 6Rank: 6

4#
Yisin 发表于 2011-4-3 12:28:14 |只看该作者
混混好厉害
路不好走,你却依旧满眼的爱,找不到理由...

使用道具 举报

Rank: 8Rank: 8

5#
那个谁 发表于 2011-4-20 14:53:56 |只看该作者
{:3_51:}{:3_51:}{:3_51:}{:3_51:}{:3_51:}{:3_51:}{:3_51:}{:3_51:}{:3_51:}{:3_51:}{:3_51:}{:3_51:}{:3_51:}{:3_51:}{:3_51:}

使用道具 举报

Rank: 7Rank: 7Rank: 7

6#
俊俊 实名认证  发表于 2011-7-19 16:44:41 来自手机 |只看该作者
说的不错,理解很到位,但那个给字条的比喻不太合适,或者可以比喻成告诉他们一个id

使用道具 举报

Rank: 7Rank: 7Rank: 7

7#
奔波儿灞 发表于 2011-7-22 09:26:58 |只看该作者
拍手する

使用道具 举报

Rank: 8Rank: 8

8#
那个谁 发表于 2011-7-23 09:55:43 |只看该作者
Alvin 发表于 2011-3-31 00:35
混混说的好不好

不错不错。描述也很到位。还差个application哦。

使用道具 举报

Rank: 5Rank: 5

9#
youyoubaiyun 发表于 2013-4-27 18:07:01 |只看该作者
以前看不懂这些,现在来看受益匪浅,很受教的

使用道具 举报

您需要登录后才可以回帖 登录 | 加入学盟

手机版|Scripts 学盟   |

GMT+8, 2024-5-17 17:14 , Processed in 1.076215 second(s), 12 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部