ASP Session对象及Session和Cookie的区别与联系
开发工具与关键技术:Visual Studio 2015
作者:徐晶旗
撰写时间:2019年 7月 16 日
Session对象用于存储关于用户会话(session)的信息,或者更改用户会话(session)的设置,存储在session对象中的变量掌握着单一用户的信息,同时这些信息对于页面中的所有页面都是可用的。
Session和Cookie的区别和联系:
区别:Session 是服务端的存储对象,实现的方式可以有文件系统、缓存系统、数据库存储在服务器的数据会更加的安全,不容易被窃取。
Cookie 是浏览器端的存储对象,也就是储存在客户端中,有容量限制,通过 HTTP 报文与后端交互
session中保存的是对象,cookie中保存的是字符串
session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到。而cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问不到的。
联系:Session 和 Cookie 都是为了实现 HTTP 请求带上客户端状态的方法
session 的运行依赖 session id,而 session id 是存在 cookie 中的,session需要借助cookie才能正常。也就是说,如果浏览器禁用了 cookie ,同时 session 也会失效(但是可以通过其它方式实现,比如在 url 中传递 session_id)
ASP 通过为每个用户创建一个唯一的 cookie 来解决这个问题。cookie 被传送至用户的计算机上,它含有可识别用户的信息。这种接口被称作Session对象。
Session何时开始?
某个新用户请求了一个ASP文件,并且Global.asa文件引用了Session_OnStart子程序
某个值存储在Session变量中
某个用户请求了一个 ASP 文件,并且 Global.asa 使用 标签通过session的 scope 来实例化某个对象
Session何时结束?
如果用户没有在规定的时间内在应用程序中请求或者刷新页面,session就会结束。默认值为 20 分钟。
如果我们想要将超时的时间间隔设置为比默认值更短或更长,可以使用 Timeout 属性。
下面的实例设置了一个 10分钟的超时时间间隔:
<%
Session.Timeout=10
%>
要立即结束 Session,请使用 Abandon 方法:
<%
Session.Abandon
%>
使用 session时主要的问题是它们该在何时结束。我们不会知道用户最近的请求是否是后的请求。因此我们不清楚该让 session"存活"多久。为某个空闲的 session等待太久会耗尽服务器的资源。然而如果 session被过早地删除,用户就不得不一遍又一遍地重新开始,这是因为服务器已经删除了所有的信息。寻找合适的超时间隔时间是很困难的! 提示:在 session变量中仅存储少量的数据!
销毁 Session
如果我们希望删除某些session数据,可以使用 unset() 或session _destroy() 函数
unset() 函数用于释放指定的session变量:
我们也可以通过调用 session_destroy() 函数彻底销毁session:
<?php session_destroy(); ?>注释:session _destroy() 将重置session,您将失去所有已存储的session数据。