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