【发布时间】:2012-05-19 16:32:37
【问题描述】:
这是我使用经典 ASP 制作的简单登录表单,用户和管理员可以使用相同的表单登录。
在数据库的“用户”表中,我创建了一个名为“状态”的字段,数据类型为 BIT(即“0”或“1”)值被接受。每个新注册用户的默认值为“0”。
我通过了一个查询,如果状态为“0”,则特定用户或管理员应重定向到 Authentication.asp 页面,他将在该页面回答一些问题并单击提交,数据库中的状态值将设置为“1”。 “1”表示用户或管理员已经填写了认证表格,可以重定向到他想要的页面,而不是重定向到Authentication.asp页面。 为此,我使用了 If-elseif-else 语句。我重新检查了很多次,我的 if-else 语句似乎没有任何遗漏。但即使我在数据库的状态列中手动输入“1”作为状态,我总是被重定向到身份验证页面。这是我的代码。
Session("Username")=request.form("user_name")
if request.Form("sub_but") <> "" then
sql = "SELECT * FROM Users WHERE UserName='"&request.form("user_name")&"' AND Password='"&request.form("pwd")&"'"
rs.open sql, con, 1, 2
if rs.EOF then
response.Write("<script language='javascript'>{attention_emp();}</script>")
else
if(rs("status")=1 & rs("login_type")="admin") then
Response.Redirect ("admin.asp")
elseif(rs("status")=1 & rs("login_type")="emp") then
response.Redirect("leave.asp")
else
response.Redirect("auth.asp")
end if
end if
rs.close
end if
【问题讨论】:
-
如果这是一个公共站点(或有真正恶意的内部用户),我真的希望您检查您发布的表单变量是否存在 SQL 注入攻击(至少替换单引号)。
标签: sql asp-classic if-statement vbscript sql-server-2000