先说session
对SESSION的争论好象一直没有中止过,不过幺麽能理解SESSION的人应该占90以上。
但仍是讲讲,别嫌老~
有一些人同意用SESSION,有一些人不同意。但这个问题到底要怎么说。不妨听听个人见解
若是有错误请不要朝丢东西,金条和硬币除外。
有些人应该知道我是作江湖程序的,而江湖程序作看中的就是效率,但这里不谈设计,而
从一些比较实际的角度看SESSION。
首先要先说SESSION是干什么的,SESSION是能够存储针对与某一个用户的IE以及经过其当
前窗口打开的任何窗口具备针对性的用户信息存储机制。为何要这样说。看下边
先研究SESSION是如何启动的,当打开IE之后浏览网站后会发出一个指令请求SESSIONID以
及对各个类型数据的下载许可,如图片,声音以及FLASH。
数据实际传输内容:IE到服务器
GET / HTTP/1.1
Accept: p_w_picpath/gif, p_w_picpath/x-xbitmap, p_w_picpath/jpeg, p_w_picpath/pjpeg, application/x-shockwave-flash, */*
Accept-Language0: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
Host: www.jh521.com
Connection: Keep-Alive
服务器会返回一个没有被使用的SESSIONID让IE使用,当时IE就对返回SESSIONID作存储
并同时返回相关页面的下载数据,以下:服务器到IE
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Sun, 30 Nov 2003 16:41:51 GMT
Content-Length: 21174..Content-Type: text/html
Set-Cookie: ASPSESSIONIDCACBBBRT=IBOMFONAOJFEEBHBPIENJFFC; path=/
Cache-control: private
而后就是页面HTML代码
此时这个IE程序(不是客户机)的SESSIONID就为IBOMFONAOJFEEBHBPIENJFFC
而当IE在访问任何这个站点的ASP程序的时候,就会把IBOMFONAOJFEEBHBPIENJFFC发送
给服务器,服务器就会知道IBOMFONAOJFEEBHBPIENJFFC是表示你
而在服务器上设置SESSION("name")="name"
彻底能够当作是
SESSION("IBOMFONAOJFEEBHBPIENJFFC")("name")="name"
或者
SESSION(SESSIONID)("name")="name"
这样,SESSION就区分开用户了。
而当服务器反馈这个ID的时候会看这个ID有没有被使用。若是有在换一个
反正不会让你重复,若是想模拟某人的SESSION的ID来进行欺骗是能够的。不过要获取到
对方IE传输信号,而且在保证当时这个SESSIONID没有被取消的状况下才可能实施。
不过要是我有那时间直接经过POST信号找他NAME和PASS了。我可不费这个劲
想必一些人明白了了SESSIONID究竟是如何工做的
那么就在看看COOKIE,有人说SESSIONID就是COOKIE,按照技术上来说他们不属于同类
可是属于一种工做模式,用户和服务器传输私有数据
当我设置COOKIE的时候,服务器会反馈给IE一个指令。IE经过这个网络指令生成COOKIE并
存放,在特定的时候会取得这个这个信息如在访问这个站点而且COOKID有效的时候。
那么为何要用COOKIE而不用SESSION呢
看下区别
有效时间以及存储方式 传输内容
COOKIE 可设置并在本地保留 明码信息
SESSION 在IE不关闭并服务器不超时 只有SESSIONID
当若是想让用户下次登入网站不须要输入用户名或者密码的时候就只能用COOKIE,
由于他能够保留至关长的时间(在COOKIE记录被删除或者失效日期以前)
而SESSION就不能够,他不会保留太长时间,并且IE在关闭后就自动清除了SESSIONID记录
在下次登入的时候会请求新的SESSIONID
而服务器想经过用户我的变量校验用户的状态的时候,就不能用COOKIE
若是用设置用户权限是USER。而IE访问的时候就把USER的明码传输到服务器。
那么若是我经过必定手段,好比直接修改COOKIE记录,把USER修改为ADMIN呢~~
就麻烦了。
但存储用户名和密码或者网站的配色方案这样的信息,用COOKIE是最好的html