开发者网络 动网主机 支持论坛 邮局 帮助
当前位置:网络学院ASP技术ASP应用 → 关于释放session的两篇文章(二)
关于释放session的两篇文章(二)
日期:2001年4月5日 作者:东方蜘蛛(转) 人气:     [ ]
Deleting a Subset of Session Variables

When using Sessions to store variables in, I use a naming convention - for example, for all Customer related info I prefix the session variable with the substring Customer. (so for the CustomerID it would be Customer.ID, the customer username would be Customer.Name, etc.) This is very useful when viewing the session objects as you can see the related objects straight off.

The problem I had the other day was that I wanted to remove only those items from the Session which were prefixed SW.. So first off I used the following code:

'---------------------------------------
Session("SW.1")="Test 1"
Session("SW.2")="Test 2"
Session("Other")="Other"

For Each SessionItem in Session.Contents
If Left(SessionItem,3) = "SW." then
Session.Contents.Remove(SessionItem)
end if
Next
'---------------------------------------

This seems fine, but when it's run, what happens is that SW.1 is removed, but SW.2 is NOT removed. Why? I'm not exactly sure, but I guess that the index is then reset so that SW.2 is now where SW.1 was, and seeing as we have iterated past that item in the For Each...Next statement, the loop just moves to Other, missing out SW.2 altogether! Eek!

So to get round this I wrote the following function, which will properly delete all Session variables that begin with a specified substring:

'---------------------------------------
function SessionRemoveSelected(sItemPrefix)
'/////////////////////////////////////////////////
' Remove Selected Items starting with sItemPrefix
' from the Session. e.g. SS. will remove SS.ID and
' SS.NAME but not CustomerID Returns True or False
' depending on whether any items where removed.
'---------------------------------------
' sItemPrefix [string] : Item Prefix
'/////////////////////////////////////////////////
dim arySession()
dim lCount, lPrefixLength
dim SessionItem
dim blnResult

lCount = -1
lPrefixLength = len(sItemPrefix)
blnResult = false

' temporarily store in array items to remove
For Each SessionItem in Session.Contents
if left(SessionItem,lPrefixLength) = sItemPrefix then
lCount = lCount + 1
redim preserve arySession(lCount)
arySession(lCount) = SessionItem
end if
Next

' remove items
if IsArray(arySession)and lCount >= 0 then
for lCount = LBound(arySession) to UBound(arySession)
Session.Contents.Remove(arySession(lCount))
next
blnResult=true
end if

SessionRemoveSelected = blnResult
end function
'-------------------------------------------------

(出处:chinaasp.com)

相关文章:
 
·披著羊皮的大野狼 - Session
·使用sqlserver来存放和取得session
·session 和 viewstate 的比较
·监测你的站点使用多少session和application的程序
·ASP中使用Session变量的优缺点
·session变量中的数组如何引用
·如何取得所有的Session变量
·关于释放session的两篇文章(一)
·深入研究Application和Session对象(包括global.asa)3
·深入研究Application和Session对象(包括global.asa)2
相关软件:
 
·Sessions Applications Cookies Explorer v2.0
·简单的用户论证和SESSION的管理
说明:本站部分内容收集于网络,如有侵犯您的权益请来信告知,我们会第一时间进行处理,谢谢
 → 特别推荐
 → 热点TOP10

关于本站 | 诚聘英才 | 业务合作 | 联系我们 | 广告合作 | 收藏本站

海口动网先锋网络科技有限公司版权所有
Copyright ? 2000 - 2003 AspSky.Net
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077