Asp classic POST/GET时会话超时。允许登录,然后发布数据
经典的asp 有时,当用户填写大表单时,会话超时 目前,用户只得到“您未登录”和登录表单。 当用户再次登录时,他必须重新开始,并导航到上一个表单以再次填写 如果用户成功登录,我想再次提交formdataAsp classic POST/GET时会话超时。允许登录,然后发布数据,asp-classic,Asp Classic,经典的asp 有时,当用户填写大表单时,会话超时 目前,用户只得到“您未登录”和登录表单。 当用户再次登录时,他必须重新开始,并导航到上一个表单以再次填写 如果用户成功登录,我想再次提交formdata 系统中有许多表单/页面,因此登录检查在一个公共包含文件中。Hi-Lei如果会话时间是由服务器控制数据保存时间,也许您可以使用cookie解决问题,因为它由客户端(浏览器)控制。希望我的想法能对您有所帮助,谢谢willie经典ASP,我们的“单向”发布代码 我设置了一个cookie,并将cooki
系统中有许多表单/页面,因此登录检查在一个公共包含文件中。Hi-Lei如果会话时间是由服务器控制数据保存时间,也许您可以使用cookie解决问题,因为它由客户端(浏览器)控制。希望我的想法能对您有所帮助,谢谢willie经典ASP,我们的“单向”发布代码 我设置了一个cookie,并将cookie保存到members表中 cookie不需要任何花哨的东西,日期、名称、IP、会话都可以正常工作。用盐对它们进行编码 如果表单页面上的用户会话丢失或超时,则可以使用此特殊cookie 基本设置:(代码不够完整,不足以获得想法和流程) 登录页面。 创建散列 另存为Cookie
SetKeysCookie "CookieName","LostSession",strSHA256Hash,mysite.ext,"1"
Sub SetKeysCookie(strCookieName,strCookieKey,strCookieValue,strCookieDomain,strCookieExpires)
Response.Cookies(strCookieName).Expires = DateAdd("d",strCookieExpires, Now())
Response.Cookies(strCookieName).Domain = strCookieDomain
Response.Cookies(strCookieName).Path = "/"
Response.Cookies(strCookieName)(strCookieKey) = strCookieValue
Response.Cookies(strCookieName).Secure = True
End Sub
可选:我使用HTTP_Cookie,如下所示
Sub SetKeysCookieHttpOnly(strCookieName,strCookieKey,strCookieValue,strCookieDomain,strCookieExpires)
strGMTDateRFC22 = CookieServerUTC("d","&strCookieExpires&",5,"GMT") ' 1 Day set in char enc dec page
Response.AddHeader "Set-Cookie", strCookieName & "=" & strCookieKey & "=" & strCookieValue & "; expires=" & strGMTDateRFC22 & "; domain="& strCookieDomain &"; path=/;"
End Sub
更新成员数据库:
UPDATE Member SET LostSession='"&strSHA256Hash&"' WHERE ID = "&id&"" .....
在表格页:
检查Post上的会话。。。如果Session=NULL,则
检查是否设置了Cookie。
拿饼干
旧方法:Request.Cookies(“CookieName”)(“LostSession”)
新HTTP_Cookie
strCookieX = Request.ServerVariables("HTTP_COOKIE")
If InStr(strCookieX,"LostSession=") Then
j = InStrRev(strCookieX, "LostSession=")
if j > 0 Then
strCookieTEMP = Mid(strCookieX, j+12)
end if
j = 64
if j > 0 Then
strCookieTEMP = Left(strCookieTEMP, j-0)
End If
strCookie = strCookieTEMP
End If
以上内容将提取您的所有HTTP cookie,然后搜索您的丢失会话cookie。
因为我们知道固定长度,我们可以把它拉干净
接下来在表单上,我们检查此cookie分配给哪个成员
strSQL = "SELECT TOP 1 "
strSQL = strSQL & " ID,Email,ClientID,LostSession"
strSQL = strSQL & " FROM Members "
strSQL = strSQL & " WHERE LostSession = '"&strCookie&"' "
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open strSQL,Conn,3,3
If rs.EOF=False Then
Session("id") = rs("ID")
End If
rs.Close
Set rs = Nothing
找到后,我们设置最小会话变量,以允许完成此帖子。
会话(“id”)或会话(“授权”)完成此帖子所需的任何内容
在文章的最后,当我们成功提交表单时,我们现在可以将会话失败的用户发送到登录页面
Session.Abandon
sRedirectPage = "https://domain.ext/logout.asp"
Response.Status="403.6 IP Restricted"
Response.AddHeader "Location",sRedirectPage
Response.end
您应该能够看到保存超时会话的http cookie方法的不同部分
如果你需要什么,尽管问
Murray我的解决方案是,在所有页面上包含的头文件中,如果用户已注销,则创建一个表单,隐藏所有post和get值,并且用户名/密码字段可见 然后,用户重新输入用户名和密码,并提交表单 如果用户随后成功登录,脚本将继续并处理数据 它不适用于上传,但无论如何很少使用