你的位置:面向PHP >> 资讯 >> PHP开发 >> 经验交流 >> 详细内容 在线投稿

Cookie是什么?用法是怎样?与SESSION有什么区别?(二)

热度132票  浏览80次 【共0条评论】【我要评论 时间:2009年9月30日 17:49
文章信息

来源:转载

面向PHP1n8|n-`s

二session 简介面向PHP+Ig3Rd_

JUY2hiP0IE中:

8A)[5_]f(r"\0 面向PHP,j*K(gH*Z A RS3t~

有效的窗品包括

\6}B#e!x]#N0 面向PHP?4|+m tiI,r@ A

1.Session对象只在建立Session对象的窗口中有效。面向PHPvL Zs;T(h6{a

面向PHP;n s t7mxp'{ e w

2.在建立Session对象的窗口中新开链接的窗口面向PHPv(oj_9A+]O

面向PHPZ3xz SJ7]c1Z,SSi

无效的窗口包括面向PHPz#v8x+l1i

cVS}+?q:h01.直接启动IE浏览器的窗口面向PHP7Y$h? i*o oA-l5P

*yR7]0ZN@1AJ02.不是在建立Session对象的窗口中新开链接的窗口面向PHPm]]gz#X ut`-`U

面向PHP paS}$m.V

NetScape中:

Hdc7E _se Pi0

"@m'?r ~'__:L0只要一个窗口有了某个Session对象,则全部窗口对此Session都有效

O'plS2? W_9?0

3Q k X N+s R0Session是什么呢?简单来说就是服务器给客户端的一个编号。当一台WWW服务器运行时,可能有若干个用户浏览正在运正在这台服务器上的网站。 当每个用户首次与这台WWW服务器建立连接时,他就与这个服务器建立了一个Session,同时服务器会自动为其分配一个SessionID,用以标识这 个用户的唯一身份。这个SessionID是由WWW服务器随机产生的一个由24个字符组成的字符串,我们会在下面的实验中见到它的实际样子。面向PHP'A\2PF3E;cl

面向PHPS&tCv]2B Y

这个唯一的SessionID是有很大的实际意义的。当一个用户提交了表单时,浏览器会将用户的SessionID自动附加在HTTP头信息中, (这是浏览器的自动功能,用户不会察觉到),当服务器处理完这个表单后,将结果返回给SessionID所对应的用户。试想,如果没有 SessionID,当有两个用户同时进行注册时,服务器怎样才能知道到底是哪个用户提交了哪个表单呢。当然,SessionID还有很多其他的作用,我 们会在后面提及到。面向PHPaHC7`*|!v

5@VBae&t*gC/_w0除了SessionID,在每个Session中还包含很多其他信息。但是对于编写ASP或ASP.NET的程序与来说,最有用的还是可以通过访问 ASP/ASP.NET的内置Session对象,为每个用户存储各自的信息。例如我们想了解一下访问我们网站的用户浏览了几个页面,我们可能在用户可能 访问到每个的页面中加入:

4m Tm-Ql ^0

.K`K%WG hf:}4{0通过以下这句话可以让用户得知自己浏览了几个页面:面向PHP7WV([U Ux0^W

mIT.^%h!li0可能有些有些读者会问:这个看似像是数组的Session(“..”)是哪里来的?需要我定义吗?实际上,这个Session对象是具有ASP解释 能力的的WWW服务器的内建对象。也就是说ASP的系统中已经给你定义好了这个对象,你只需要使用就行了。其中Session(“..”)中的..就好像 变量名称,Session(“..”)=$$中的$$就是变量的值了。你只需要写上句话,在这个用户的每个页面中都可以访问..变量中的值了。面向PHPY.b,t%r4e t

面向PHPubf,o5p

其实ASP一共内建了7个对象,有Session、Application、Cookie、Response、Request、Server等。在其他的服务器端脚本语言如JSP、PHP等中也有其类似的对象,只是叫法或者使用方法上不太一样。

1}O_/m[%P+Ce0

W-}Yo0[.a4I0ASP Session的功能的缺陷

)R/cG\7}0y0 面向PHP6}1s.da1Yh

目前ASP的开发人员都正在使用Session这一强大的功能,但是在他们使用的过程中却发现了ASP Session有以下缺陷:

sE[5|:R0 面向PHP)wV*^ Qn8L

进程依赖性:ASP Session状态存于IIS的进程中,也就是inetinfo.exe这个程序。所以当inetinfo.exe进程崩溃时,这些信息也就丢失。另外,重起或者关闭IIS服务都会造成信息的丢失。面向PHP E Ha*n [v

面向PHP5gW^ `x `7Z)ye

Session状态使用范围的局限性:刚一个用户从一个网站访问到另外一个网站时,这些Session信息并不会随之迁移过去。例如:新浪网站的 WWW服务器可能不止一个,一个用户登录之后要去各个频道浏览,但是每个频道都在不同的服务器上,如果想在这些WWW服务器共享Session信息怎么办 呢?

.N-X*U^$O0

]M,Y Tx9FJ0Cookie的依赖性:实际上客户端的Session信息是存储与Cookie中的,如果客户端完全禁用掉了Cookie功能,他也就不能享受到了Session提供的功能了。

){Z$sN&f/W$h|)y0

,D;}%f rs0鉴于ASP Session的以上缺陷,微软的设计者们在设计开发 ASP.NET Session时进行了相应的改进,完全克服了以上缺陷,使得ASP.NET Session成为了一个更加强大的功能。

,^^ y(Sg0 面向PHPJ(b)J9~*B-N+S+y

三 区别

^"FzO AZ0 面向PHP l&t}H Sd1g

Session是存在服务器端的;而Cookie是存在客户端的!!

;{(N:f\FJ6^q8O#G]6G0Z0 面向PHP V R&M$AQgF7E~U

Session更不需要Cookie来支持和不会受浏览器端的设置影响,可记录每个访问者的信息,独立在服务器端,比Cookie安全!

l q\_*sB$E0

1k(F/J4|.{2P?S8Q,J0Session是存在内存中的,浏览器关闭它也就“死”了;Cookie是以文件方式存在的,可以修改其“存活”时间。

0qlw2|Y"z4D6i!_9d0
TAG: cookie Cookie session SESSION 用法
顶:8 踩:11
对本文中的事件或人物打分:
当前平均分:-0.59 (41次打分)
对本篇资讯内容的质量打分:
当前平均分:-0.34 (38次打分)
【已经有34人表态】
上一篇 下一篇
发表评论

网友评论仅供网友表达个人看法,并不表明本网同意其观点或证实其描述。

查看全部回复【已有0位网友发表了看法】