Session 使用ASP Classic登录的多个活动会话

Session 使用ASP Classic登录的多个活动会话,session,asp-classic,Session,Asp Classic,我有一个简单的ASP经典登录脚本 当登录成功时,它会为用户创建一个会话变量,以便识别 但是,当一个用户已登录时,另一个用户无法登录。他们将收到一个错误,告诉您必须使用可更新的查询 我应该为每个登录创建唯一的会话cookie吗?我不太确定。。。如能提供一些指导,将不胜感激 HTML: ASP: 只是想检查一下,联系人表中的每个用户都是唯一的吗?您进行搜索的方式似乎很可能有多个同名用户。如果用户的“用户”和“通过”组合是唯一的,则您可能需要继续通过rs。当您仅检查每个测试值的结果计数时,您是否只得到

我有一个简单的ASP经典登录脚本

当登录成功时,它会为用户创建一个会话变量,以便识别

但是,当一个用户已登录时,另一个用户无法登录。他们将收到一个错误,告诉您必须使用可更新的查询

我应该为每个登录创建唯一的会话cookie吗?我不太确定。。。如能提供一些指导,将不胜感激

HTML:

ASP:


只是想检查一下,联系人表中的每个用户都是唯一的吗?您进行搜索的方式似乎很可能有多个同名用户。如果用户的“用户”和“通过”组合是唯一的,则您可能需要继续通过rs。当您仅检查每个测试值的结果计数时,您是否只得到1个计数?@Kheaney感谢您的回答。用户是独一无二的。唯一有可能复制的值存储在sessionid中,sessionid有1/4的几率是相同的。但用户是独一无二的。如果我运行rs.RecordCount,它将检索-1…您能解释一下您是如何测试其他用户无法登录的吗?你在用不同的电脑吗?浏览器?如果您使用rs.open sql,conn,3,1,这应该可以解决记录计数问题。如果想了解原因,请阅读光标类型。True。你说得很对。好的,非常感谢@halfer。
    <form method="post" action="" name="login_form" class="login_form">
      <div class="login-wrap">
        <h1>login</h1>
        <p><%=error%>
        <p><input type="text" name="login_user" id="login_user" placeholder="user"></p>
        <p><input type="password" name="login_pass" id="login_pass" placeholder="password"></p>
        <p><input type="submit" value="Login" class="btn"></p>
      </div>
      <p>&nbsp;</p>
    </form>
// Process login 
if request.form("login_user") <> "" then
   user = Request.Form("login_user")
   password = Request.Form("login_pass")

   set conn=Server.CreateObject("ADODB.Connection")
   conn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=******;User ID=Admin;" & _
   "DATA SOURCE=" & Server.MapPath("contacts.mdb")
   set rs = Server.CreateObject("ADODB.Recordset")
   sql = "SELECT * FROM contacts WHERE user=" & user
   rs.open sql, conn

   if rs.EOF then
      error = "Sorry, your user was not found."
   end if

   if Request.Form("login_user") = "" then
      error = "You must enter your user number."
   elseif Request.Form("login_pass") = "" then
      error = "You must enter your password."
   elseif rs("pass") <> "" then
      if password = rs("pass") then
         session("id") = rs("area")
         session("user") = rs("user")
         Response.Redirect("admin.asp")
      else
         error = "Invalid password."
      end if
   else
      error = "Please enter a password."
   end if

   rs.Close
   conn.Close
   set rs = nothing
   set conn = nothing 
end if